8797 sujets

Développement web côté serveur, CMS

Pages :
bonsoir, j'aurais voulu savoir si il etait possible quand une personne clique sur mon s'inscrire sur mon site de ne pas rediriger le formulaire d'inscription sur une autre page mais de faire une boite en javascript qui va afficher le formualire...
je sait que les formulaires sont possibles avec javascript et afficher ma page avec "prompt" mais est ce que j'aurais des problemes avec MYSQL vu que je dois garder les informations saisites dans une table?

si c'est possible, faut-il creer une variable sur ma page PHP, page javascript/html ?

Et puis je voudrais donc faire une autre boite de dialogue qui dit si on c'est bien inscrit ou pas et une redirection a la page d'acceuil... Mais ca je pence que c'est possible en metant du javascrit dans mes conditions PHP non?

merci de me diriger... Smiley ravi
Modérateur
Salut, Smiley smile

En php, tu peux déjà rester sur la même page. Il suffit pour cela de passer une variable dans l'url qui, si elle est présente, indiquera qu'il faut afficher le formulaire. De là, la mise en page sous forme de boite de dialogue s'effectue via css (ce n'est pas une fenêtre à part mais juste un bloc conteneur que tu intègres directement dans ta page).

Lorsque l'utilisateur remplit le formulaire et l'envoie (méthode post), tu insères ces données dans ta base et tu conserves un paramètre en session qui indique que l'utilisateur est correctement authentifié.

Sur chacune des pages de ton site, il faut vérifier si ce paramètre d'authentification est présent. Si c'est le cas, tu restes sur la page avec tout le contenu nécessitant cette authentification, sinon, tu n'affiches que le contenu qui ne nécessite pas d'authentification (ou bien tu rediriges le visiteur sur la page d'accueil si tel est ton souhait).

Javascript, dans tout ça, permet simplement de ne pas recharger la page en envoyant toutes les données via Ajax. C'est quelquechose d'optionnel mais judicieux.

Après, je te conseillerais plutôt d'éviter le mélange des langages pour une question de maintenance.
merci de m'aider Smiley smile
je n'est pas tout compris mais bon..Si j'ai bien compris:
Alors en fait, je garde ma page qui demande a l'utilisateur de s'inscrire... Apres ce lien renvoie donc a une page formulaire. Ca j'ai deja, mais apres c'est en CSS que je dois mettre le formulaire sous forme de boite de dialogue? Il n'y a pas de fonction pour ca si,?

Et si il y a une fonction, je dois creer une <div id="formulaire"> devant le formulaire pour mettre dans mon code CSS la #formulaire et dedans mettre la propriété de la boite de dialogue ??
Ensuite je n'est pas compris le bloc conteneur désolé... Ca affichera le formulaire dans une nouvelle fenetre ou par dessus ma page actuelle (le lien inscription etant dans le menu) ???

Et ensuite je met dans la meme div le code PHP qui me permet de poster dans la BDD le formulaire avec POST...
Par contre pour les sessions, oui je dois verifier le paramettre d'authentification donc connection et l'afficher donc ca par une page <?php include ...> et mettre cet include sur toutes mes pages...

Et donc je n'est pas besoin d'utiliser javascript ??? c'est CSS qui gere la boite? désoloé je n'est pas trop compris ca car CSS ne permet pas de faire des boites si? ...

Smiley ohwell

Et ajax me permetrait quoi?
et enfin, pour eviter le melange des languages, je ne peut pas faire un formulaire sous forme de boite de dialogue si?
sinon je melange les languages...

je met mon code de l'inscription:




 <?php
 // on teste si le visiteur a soumis le formulaire  
 
 if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
     // on teste l'existence de nos variables. On teste également si elles ne sont pas vides 
     
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
         // on teste les deux mots de passe 
         if ($_POST['pass'] != $_POST['pass_confirm']) { 
         $erreur = 'Les 2 mots de passe sont différents.'; 
     } 
         else { 
          $base = mysql_connect ('localhost', 'root', 'slopestyle'); 
           mysql_select_db ('arve_s_ride', $base); 
           
          // on recherche si ce login est déjà utilisé par un autre membre 
           $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
           $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
          $data = mysql_fetch_array($req); 
   
          if ($data[0] == 0) { 
              $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")'; 
             mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
   
              session_start(); 
             $_SESSION['login'] = $_POST['login']; 
              header('Location: membre.php'); 
               exit(); 
           } 
          else { 
             $erreur = 'Un membre possède déjà ce login.'; 
           } 
        } 
     } 
     else { 
       $erreur = 'Au moins un des champs est vide.'; 
      }  
 }  
   ?>
  <html>
  <head>
  <title>Inscription au site Arve's Ride</title>
  </head>
   
  <body>
  
  <div class="inscription">
  
  Inscription au site:<br />
   <form action="inscription.php" method="post">
   Pseudo : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
   Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
   Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
   adresse mail : <input type="text" name="mail" ><br/>
   
   <h4>quel ou quels sports pratiqués-vous?</h4>
   <input type="checkbox" name="case" /> mountain bike
   <input type="checkbox" name="case" /> ski
	<input type="checkbox" name="case" /> skate
	<input type="checkbox" name="case" /> bmx
	<br/>
   
   <input type="submit" name="inscription" value="Inscription">
   </form>
   <?php
  if (isset($erreur)) echo '<br />',$erreur;  
  ?>
   </div>
     
  </body>
  </html> 


est ce que je peut faire ca:



 <?php
 // on teste si le visiteur a soumis le formulaire  
 
 if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
     // on teste l'existence de nos variables. On teste également si elles ne sont pas vides 
     
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
         // on teste les deux mots de passe 
         if ($_POST['pass'] != $_POST['pass_confirm']) { 
         $erreur = 'Les 2 mots de passe sont différents.'; 
     } 
         else { 
          $base = mysql_connect ('localhost', 'root', 'slopestyle'); 
           mysql_select_db ('arve_s_ride', $base); 
           
          // on recherche si ce login est déjà utilisé par un autre membre 
           $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
           $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
          $data = mysql_fetch_array($req); 
   
          if ($data[0] == 0) { 
              $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")'; 
             mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
   
              session_start(); 
             $_SESSION['login'] = $_POST['login']; 
              header('Location: membre.php'); 
               exit(); 
           } 
          else { 
             $erreur = 'Un membre possède déjà ce login.'; 
           } 
        } 
     } 
     else { 
       $erreur = 'Au moins un des champs est vide.'; 
      }  
 }  
   ?>
  <html>
  <head>
  <title>Inscription au site Arve's Ride</title>
  </head>
   
  <body>
  -----------------------------code javascript avec prompt:----------------------------------------------------------------------
  <div class="inscription">
  
  Inscription au site:<br />
   <form action="inscription.php" method="post">
   Pseudo : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
   Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
   Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
   adresse mail : <input type="text" name="mail" ><br/>
   
   <h4>quel ou quels sports pratiqués-vous?</h4>
   <input type="checkbox" name="case" /> mountain bike
   <input type="checkbox" name="case" /> ski
	<input type="checkbox" name="case" /> skate
	<input type="checkbox" name="case" /> bmx
	<br/>
   
   <input type="submit" name="inscription" value="Inscription">
   </form>
   <?php
  if (isset($erreur)) echo '<br />',$erreur;  
  ?>
   </div>
   

-----------------------------------------------fin du code javascript---------------------------------------------

  
  </body>
  </html> 




?? ou je dois recreer un autre formulaire en javascript?

merci de m'aider Smiley smile
Modérateur
Hello, Smiley smile

a écrit :
Alors en fait, je garde ma page qui demande a l'utilisateur de s'inscrire...
Tu n'es pas forcément obligé de dédier une page à cela... Chaque page peut faire l'affaire.

En gros, sur chacune des pages de ton site, tu vérifies que la variable d'identification conservée en session existe.
Si c'est le cas, tu peux afficher un formulaire de déconnexion ainsi que toutes les données dites "sensibles"... Si ce n'est pas le cas, tu affiches le formulaire de connexion et uniquement les données disponibles pour tout le monde...

Cela pourrait donner quelquechose comme ça :
index.php
<?php

session_start();

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>Ma page</title>
	</head>
	<body>

<?php

	require_once 'data.php';

?>

	</body>
</html>

data.php (script simplifié... C'est pour le principe)
<?php

# CONNEXION A LA BDD 
require_once 'connect.php';

# SI UNE REQUÊTE CONTENANT L'IDENTIFIANT ET LE MOT DE PASSE EST LANCÉE
if(!empty($_POST['ident']) && !empty($_POST['mdp'])) {

	# ON DEFINIT UNE VARIABLE D'IDENTIFICATION A FALSE
	$know = false;

	# ON SÉLECTIONNE TOUS LES UTILISATEURS ET MOTS DE PASSE ASSOCIÉS
	...

	# ON BOUCLE SUR LE RESULTAT ET SI UN PSEUDO ET UN MOT DE PASSE ASSOCIÉ CORRESPONDENT À CEUX DE LA REQUÊTE, ON IDENTIFIE L'UTILISATEUR
	...
	$know = true;

	# SI L'UTILISATEUR EST INCONNU ET QU'IL S'INSCRIT, ON INSÈRE LES DONNÉES DANS LA BASE ET ON L'IDENTIFIE (pour ce cas, on demande généralement de confirmer le mot de passe)
	if(!$know && isset($_POST['mdp2']) && $_POST['mdp'] == $_POST['mdp2']) {
		...
		$know = true;
	}

	# SI L'UTILISATEUR EST CONNU, ON LE LOGGUE
	$_SESSION['log'] = $know == true ? true : false;
}

# SI UNE REQUÊTE DE DÉCONNEXION EST LANCÉE, ON DÉLOGGUE L'UTILISATEUR
if(isset($_POST['deconnect']) && $_POST['deconnect'] == 'Deconnexion') {
	$_SESSION['log'] = false;
}

# SI L'UTILISATEUR EST LOGGUÉ, ON AFFICHE TOUT LE CONTENU ET SINON QUE LA PARTIE PUBLIQUE
if(isset($_SESSION['log']) && $_SESSION['log'] == true) {

	# DANS CETTE PARTIE SE TROUVE LE FORMULAIRE DE DECONNEXION AVEC TOUTE SORTE DE DONNEES
	...
}
else {

	# DANS CETTE PARTIE SE TROUVE LE FORMULAIRE DE CONNEXION AVEC LES DONNEES PUBLIQUES
	...
}

?>
En somme, ton formulaire peut s'afficher sur toutes tes pages et la redirection est inutile. Il n'y a pas de nouvelle fenêtre et ça fonctionne approximativement comme le formulaire de connexion du forum. Smiley smile
a écrit :
apres c'est en CSS que je dois mettre le formulaire sous forme de boite de dialogue? Il n'y a pas de fonction pour ca si,?
Il n'y a pas de fonction toute faite non. Smiley ravi C'est à toi de faire la mise en forme de ton formulaire mais tu n'es pas obligé de faire une boite de dialogue. Ca peut être un bloc permanent sur ta page, comme, encore une fois, la page d'accueil du forum.
a écrit :
Et ajax me permetrait quoi?
Jusqu'à maintenant, à rien... En ajoutant une surcouche, cela peut simplement te permettre d'éviter de recharger toute la page...
a écrit :
et enfin, pour eviter le melange des languages, je ne peut pas faire un formulaire sous forme de boite de dialogue si?
Si, bien sur... Une classe ou un identifiant sur tes formulaires et de là, tu peux tout gérer dans une feuille de style externe...
oui je vois, donc en fait, je fait le formulaire dans un petit cadre en mileu de page par exemple sur une autre page... et quand il est inscrit, je le fait revenir a la page principale...
Mais je suis obliger d'envoyer celui qui veut s'inscrire sur une autre page alors... je ne peut pas faire de boite...

Sinon j'ai fait les sessions, y'a juste que je n'arrive pas a rendre l'utilisateur reconnu quand il ouvre une autre page.. enfin le reconaitre sur toutes les pages du site... Comme tu m'a montré ici... je ne comprend pas trop désolé...

je met juste le code des sessions:
j'ai mis la connexion et" l'inscription en lien" sur toutes le spages puisqu'il est dans le menu....

l'incription.php :




 <?php
 // on teste si le visiteur a soumis le formulaire  
 
 if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
     // on teste l'existence de nos variables. On teste également si elles ne sont pas vides 
     
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
         // on teste les deux mots de passe 
         if ($_POST['pass'] != $_POST['pass_confirm']) { 
         $erreur = 'Les 2 mots de passe sont différents.'; 
     } 
         else { 
          $base = mysql_connect ('localhost', 'root', 'slopestyle'); 
           mysql_select_db ('arve_s_ride', $base); 
           
          // on recherche si ce login est déjà utilisé par un autre membre 
           $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
           $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
          $data = mysql_fetch_array($req); 
   
          if ($data[0] == 0) { 
              $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")'; 
             mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
   
              session_start(); 
             $_SESSION['login'] = $_POST['login']; 
              header('Location: membre.php'); 
               exit(); 
           } 
          else { 
             $erreur = 'Un membre possède déjà ce login.'; 
           } 
        } 
     } 
     else { 
       $erreur = 'Au moins un des champs est vide.'; 
      }  
 }  
   ?>
  <html>
  <head>
  <title>Inscription au site Arve's Ride</title>
  </head>
   
  <body>
  
  <div class="inscription">
  
  Inscription au site:<br />
   <form action="inscription.php" method="post">
   Pseudo : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
   Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
   Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
   adresse mail : <input type="text" name="mail" ><br/>
   
   <h4>quel ou quels sports pratiqués-vous?</h4>
   <input type="checkbox" name="case" /> mountain bike
   <input type="checkbox" name="case" /> ski
	<input type="checkbox" name="case" /> skate
	<input type="checkbox" name="case" /> bmx
	<br/>
   
   <input type="submit" name="inscription" value="Inscription">
   </form>
   <?php
  if (isset($erreur)) echo '<br />',$erreur;  
  ?>
   </div>
     
  </body>
  </html> 




ensuite le membre.php :
 <?php
 session_start();  
 session_unset();  
 session_destroy();  
 header('Location: menu_connexion.php');  
  exit();  
  ?> 


puis vient la connexion qui est dans le menu: par un include: connexion.php :

 <?php
  // on teste si le visiteur a soumis le formulaire de connexion  
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { 
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) { 
  
        $base = mysql_connect ('localhost', 'root', 'slopestyle'); 
        mysql_select_db ('arve_s_ride', $base); 
        
        // on teste si une entrée de la base contient ce couple login / pass 
        $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
        $data = mysql_fetch_array($req); 
        
        mysql_free_result($req); 
        mysql_close(); 
         
        // si on obtient une réponse, alors l'utilisateur est un membre 
 if ($data[0] == 1) { 
            session_start(); 
           $_SESSION['login'] = $_POST['login']; 
           header('Location: ./sessions/membre.php'); 
           exit(); 
        } 
        // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe 
elseif ($data[0] == 0) { 
          $erreur = 'Compte non reconnu.'; 
       } 
        // sinon, alors la, il y a un gros problème [smile] 
else { 
           $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; 
        } 
     } 
else { 
        $erreur = 'Au moins un des champs est vide.'; 
     }  
   }  
  ?>
 <html>
 
  
 <body>
  <h5>Connexion :</h5>
  <form action="index.php" method="post">
  pseudo : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
  Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
  <input type="submit" name="connexion" value="Connexion">
  </form>
  <a href="./sessions/inscription.php">Vous inscrire</a>
  <?php
   if (isset($erreur)) echo '<br /><br />',$erreur;  
   ?>
   </body>
 </html> 


et enfin la deconnexion.php :
<?php
 session_start();  
 session_unset();  
 session_destroy();  
 header('Location: menu_connexion.php');  
  exit();  
  ?> 


mais vu que le site n'est pas encore en ligne, je ne sait pas si ca marche...
est ce que a ton avis vu que tu t'y connais bien ca pourait marcher?? ou je dois rajouter quelechose...

et c'est ton deuxieme code que je dois prendre comme exemple pour marcquer a chaque page que l'utilisateur "X" est bien connecter?

merci de m'aider... Smiley smile
Modérateur
guillaume6 a écrit :
oui je vois, donc en fait, je fait le formulaire dans un petit cadre en mileu de page par exemple sur une autre page... et quand il est inscrit, je le fait revenir a la page principale...
Mais je suis obliger d'envoyer celui qui veut s'inscrire sur une autre page alors... je ne peut pas faire de boite...
mmh... non. Smiley confuse

Ce formulaire, tu le mets dans l'include ce qui donne quelquechose comme ceci :

data.php :
<?php

...
if(isset($_SESSION['log']) && $_SESSION['log'] == true) {
    ....
}
else {

?>
<form class="connect" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
...
</form>
<?php

}

?>
Le echo htmlspecialchars($_SERVER['PHP_SELF']); qui se trouve dans l'attribut "action" te permet de tout traiter sur la page dans laquelle tu mets cette include, ce qui rend les redirections inutiles.
La classe "connect" (ou un id si tu veux), quant à elle, te permet de positionner et de mettre en forme ton formulaire comme bon te semble.
Par ailleurs, ce formulaire n'apparait que si l'utilisateur n'est pas authentifié. (on se trouve dans le bloc "else")

a écrit :
Sinon j'ai fait les sessions, y'a juste que je n'arrive pas a rendre l'utilisateur reconnu quand il ouvre une autre page.. enfin le reconaitre sur toutes les pages du site... Comme tu m'a montré ici... je ne comprend pas trop désolé...
Lorsque l'utilisateur est bien authentifié, tu te trouves dans le bloc if(isset($_SESSION['log']) && $_SESSION['log'] == true) { ... }. C'est à cet endroit que tu peux mettre le formulaire de déconnexion. (voir la structure que je t'ai montré dans mon post précédent)

Au moment où l'utilisateur se connecte, tu peux récupérer au sein de la base les données le concernant et les mettre en session (ex.: $_SESSION['pseudo']) en plus de $_SESSION['log'].
De là, si tu souhaites afficher ces données dans tes pages, tu n'as plus qu'à mettre :
echo htmlspecialchars($_SESSION['pseudo']);

Modifié par koala64 (31 Mar 2008 - 12:41)
ah d'accord, merci bien, donc je n'est pas forcement besoin de mon deconnexion.php, je peut le mettre dans le else...

Ensuite, vu que le formulaire de connection et l'inscription est dans un menu et que le menu est sur toutes les pages, je n'est pas besoin de forcer l'utilisateur a la page d'inscription je pence...

Puis echo htmlspecialchars($_SESSION['pseudo']); est ce que je met sur chaque page ? mais je dois d'abbord mettre session start sur les pages avant le header c'est ca?

merci, tu m'a deja bien eclairer, j'ai juste quelques points a preciser, merci Smiley smile
Modérateur
guillaume6 a écrit :
ah d'accord, merci bien, donc je n'est pas forcement besoin de mon deconnexion.php, je peut le mettre dans le else...
euh... non ?!! Smiley biggol

Le bloc else { ... }, c'est le cas où l'utilisateur n'est pas connecté donc le déconnexion ne sert à rien. Tu peux placer ce formulaire en lieu et place du formulaire de connexion mais dans le bloc if(...) { ... }, c'est à dire le cas où l'utilisateur est bien connecté.

a écrit :
Ensuite, vu que le formulaire de connection et l'inscription est dans un menu et que le menu est sur toutes les pages, je n'est pas besoin de forcer l'utilisateur a la page d'inscription je pence...
En effet. Smiley smile Tant que l'utilisateur n'est pas connecté, le formulaire de connexion/inscription s'affiche sur chacune des pages et seules les données "tout public" sont affichées.

a écrit :
Puis echo htmlspecialchars($_SESSION['pseudo']); est ce que je met sur chaque page ?
Ca, c'est selon ton souhait... Smiley cligne En mode "connecté", seule la variable $_SESSION['log'] est recquise. Tu peux conserver les autres données tel que le pseudo ou autres en variables de session mais rien ne t'oblige à les afficher via un echo.

a écrit :
mais je dois d'abbord mettre session start sur les pages avant le header c'est ca?
oui, tout à fait... Smiley jap sinon, aucune des données "sensibles" ne s'affichera.
d'accord donc le echo me sert a afficher les infomations de la personne conecté comme: salut: "truc" . truc etant le pseudo

ensuite la deconnection je l'ai deja, c'est la feuille "connexion.php " que j'ai mis plus haut.


        // si on obtient une réponse, alors l'utilisateur est un membre 
 if ($data[0] == 1) { 
            session_start(); 
           $_SESSION['login'] = $_POST['login'];           header('Location: ./sessions/membre.php'); 
           exit(); 
        } 
        // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe 
elseif ($data[0] == 0) { 
          $erreur = 'Compte non reconnu.'; 
       } 
        // sinon, alors la, il y a un gros problème [smile] 
else { 
           $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; 
        } 
     } 
else { 
        $erreur = 'Au moins un des champs est vide.'; 
     }  
   }  
  ?>


je le resume avec ca donc...

et enfin, au debut de toutes les pages de mon site, je place deavant le code:



<?php

session_start();

?>


et donc la personne sera connectée sur le site sur chaque pages...?
Modérateur
Salut,

guillaume6 a écrit :
ensuite la deconnection je l'ai deja, c'est la feuille "connexion.php " que j'ai mis plus haut.
Tu veux sans doute parler de la page "deconnexion.php", non ? Smiley smile

Là encore, tu n'es pas obligé de passer par une nouvelle page. Dans la structure que je t'ai montré au départ, il est précisé que si tu reçois des données post contenant la variable "deconnect" avec la valeur "Deconnexion", tu passes la variable de session $_SESSION['log'] à "false", rendant le test suivant invalide. Cette variable peut être transmise à l'aide d'un formulaire de déconnexion... celui qui remplace le formulaire de connexion/inscription une fois l'utilisateur authentifié.

En fait, il faut mettre cette structure sur chacune des pages où l'utilisateur peut se connecter... c'est à dire une page en particulier ou toutes si tu le souhaites.

Après, les instructions obligatoires sont au minimum :
<?php

session_start();

if(isset($_SESSION['log']) && $_SESSION['log'] == true) {
    // L'utilisateur est connecté
}
else {
    // L'utilisateur n'est pas connecté
}
?>
pour savoir si l'utilisateur est connecté ou non.
oui désolé c'est deconnection.php...

ah d'accord merci pour la connexion sur chaque pages... j'ai enfin compris, merci pour le sript, je te donnerais une page donc complette pour verifier mais tu m'a bien éclairé merci.

et pour la deconnection, je met:
(en language francais) lol Smiley langue
"if: l'utilisateur "bidule" n'est pas connecter, on met le formulaire de connection et inscription dans le menu... (donc ca je l'ai..)
"else: je met que l'utilisateur "bidule" est connecté ainsi que les informations que je veut a son propos... dans le meme menu...

c'est ca?
guillaume6 a écrit :

personne peut me dire svp?
Si !
a écrit :
Erreur SQL !INSERT INTO membre VALUES("", "demo", "fe01ce2a7fbac8fafaed7c982a04e229")
Column count doesn't match value count at row 1
Smiley biggol

Je pense que ta table membre a plutôt 4 champs et non 3...


Edit: un peu de lecture
Column count doesn't match value count at row 1
Modifié par Heyoan (06 Apr 2008 - 19:57)
elle en a 5...
Id, login, pass_md5,sport,mail ...

voila les 5 champs... pourtant dans le formulaire il ya bien 5 champs aussi... Je pence que le probleme vient de soprt non? je devrais supprimer le champ mail aussi... mais n'y a t-il pas un moyen de laisser au moin le "mail"? et de l'utiliser?
guillaume6 a écrit :
elle en a 5...
Id, login, pass_md5,sport,mail ...

voila les 5 champs... pourtant dans le formulaire il ya bien 5 champs aussi...
Alors soit tu récupères mal les variables de ton formulaire, soit (plus logique) ta requête INSERT est mal écrite... on peut voir le code de la page inscription.php ?

en passant, il est tout à fait possible de n'alimenter que 3 champs sur 5 dans un INSERT en utilisant la forme
INSERT INTO matable (champ1, champ3, champ4) VALUES ('toto', 4, 77)

Modifié par Heyoan (06 Apr 2008 - 22:39)
voila mon code inscription.php
 <?php
 // on teste si le visiteur a soumis le formulaire  
 
 if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
     // on teste l'existence de nos variables. On teste également si elles ne sont pas vides 
     
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
         // on teste les deux mots de passe 
         if ($_POST['pass'] != $_POST['pass_confirm']) { 
         $erreur = 'Les 2 mots de passe sont différents.'; 
     } 
         else { 
          $base = mysql_connect ('localhost', 'root', 'slopestyle'); 
           mysql_select_db ('arve_s_ride', $base); 
           
          // on recherche si ce login est déjà utilisé par un autre membre 
           $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
           $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
          $data = mysql_fetch_array($req); 
   
          if ($data[0] == 0) { 
              $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")'; 
             mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
   
              session_start(); 
             $_SESSION['login'] = $_POST['login']; 
              header('Location: membre.php'); 
               exit(); 
           } 
          else { 
             $erreur = 'Un membre possède déjà ce login.'; 
           } 
        } 
     } 
     else { 
       $erreur = 'Au moins un des champs est vide.'; 
      }  
 }  
   ?>
  <html>
  <head>
  <title>Inscription au site Arve's Ride</title>
  </head>
   
  <body>
  
  <div class="inscription">
  
  Inscription au site:<br />
   <form action="inscription.php" method="post">
   Pseudo : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
   Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
   Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
   adresse mail : <input type="text" name="mail" ><br/>
   
   <h4>quel ou quels sports pratiqués-vous?</h4>
   <input type="checkbox" name="case" /> mountain bike
   <input type="checkbox" name="case" /> ski
	<input type="checkbox" name="case" /> skate
	<input type="checkbox" name="case" /> bmx
	<br/>
   
   <input type="submit" name="inscription" value="Inscription">
   </form>
   <?php
  if (isset($erreur)) echo '<br />',$erreur;  
  ?>
   </div>
     
  </body>
  </html> 


recuperer 3 champs est une bonne idée oui
alors, je pence en regardant mon code savoir ou est le probleme mais j'ai poster car je ne savait pas commen le resoudre... en fait,
est-ce que je peut mettre ici:
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
         // on teste les deux mots de passe 
         if ($_POST['pass'] != $_POST['pass_confirm']) { 
         $erreur = 'Les 2 mots de passe sont différents.'; 
     } 

le code de POST['sport'] et POST ['mail'] ou c'est apres ??
dans ce cas, ce serait pris en compte non?
guillaume6 a écrit :

...
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")';


à priori il manque les valeurs pour sport et email dans ta requête Smiley langue !

D'ailleurs il faut commencer par remplacer le name case de tes checkbox par un nom plus explicite pour chacun. Comme ça tu peux vérifier qu'une case a été cochée en vérifiant si la variable post correspondante existe. par exemple
if (isset($_POST['ski'])) { // ski a été coché

Modifié par Heyoan (06 Apr 2008 - 23:37)
De rien Smiley cligne !

Et si c'est plus pratique pour toi tu peux aussi te baser sur ce petit exemple :
<?php
if (!empty($_POST)) {
	foreach ($_POST['case'] as $sport) {
		echo "sport pratiqué : ",$sport,"<br />";
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test checkbox</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form action="" method="post">
Quel(s) sport(s) pratiquez-vous ?
	<input type="checkbox" name="case[]" value="mountain" /> mountain bike
	<input type="checkbox" name="case[]" value="ski" /> ski
	<input type="checkbox" name="case[]" value="skate" /> skate
	<input type="checkbox" name="case[]" value="bmx" /> bmx
<input type="submit" />
</form>
</body>
</html>

Bonne continuation... Smiley smile
Pages :