Page 1 sur 2

formulaire d' authentification

Posté : 24 juin 2009, 23:20
par zyriuse75
bonjour
j' essaye de créer un formulaire d'authentification , j ai réussit à le créer ou presque mais voila quand je clique sur mon onglet s'enregistrer il me dit le nom d'utilisateur est deja utilise alors que je n ai rien fait il me fait aussi un enregistrement dans ma base avec rien et pour couronner le tout les onglet Envoyer et effacer ne fonctionne plus ,
je solicite donc votre aide car la je ne c'est pas quoi faire j ai beau chercher mais je trouve pas
voici le code source de enregistrement.php
<?php
include ('connect_bdd.php');

	if (isset($_nom['nom'])&& isset($_prenom['prenom'])&& isset($_age['age'])&& isset($_ville['ville'])&& isset($_mail['mail']) && isset($_login['login'])&& isset($_pass['password'])&& isset($_confirm['confirmation'])&& isset($_Os['Os'])){
	//	extract ($_post);
	}
	
	if (!empty($_login) && !empty($_password) && !empty($_confirmation) && !empty($_mail)){
		$message = "veuillez remplir les case";
		}

	 if(!ereg("^[A-Za-z0-9_]{4,20}$", $_login["login"]))
	{
   	  		$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caracteres<br />\n";
   
}
  	 else if(!ereg("^[A-Za-z0-9]{4,}$", $_password["password"]))
	{
  		  		 $message = "Votre mot de passe doit comporter au moins 4 caracteres";
}
 	 else if($_password["password"] != $_conf["confirmation"])
	{
     			 $message = "Votre mot de passe n'a pas ete correctement confirme";
}
    else if(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $_mail["mail"]))
	{
   			  $message = "Votre adresse e-mail n'est pas valide";
}
 		$sql = mysql_query("
                    SELECT login,mail
                    FROM membre
                    WHERE login = '" . $_login["login"] . "'
                    OR mail = '" . $_mail["mail"] . "'");
if (!$sql)
    {
    $message =" Impossible de verifier votre authenticiter";
}
    else
    {
    if (mysql_num_rows($sql)> 0)                    
     
     while($row = mysql_fetch_array($sql))
     {
        if($_login["login"] == $row["login"])
                              {
                                   $message = "Le nom d'utilisateur " . $_login["login"];
                                   $message .= "est deja utilise";
                              }
                              else if($_mail["mail"] == $row["mail"])
                              {
                                   $message = "L'adresse mail " . $_mail["mail"];
                                   $message .= "est deja utilisee";
                              }
                              
                         }
                                                                    
                         // Création du compte utilisateur
                         $sql = mysql_query("
                              INSERT INTO membre(
                                   nom
                                   , prenom
                                   , age
                                   , ville
                                   , mail
                                   , login
                                   , password
                                   , Os
                              )
                              VALUES(
                                   '" . $_nom["nom"] . "'
                                   ,'" . $_prenom["prenom"] . "'
                                   ,'" . $_age["age"] . "'
                                   ,'" . $_ville["ville"] . "'
                                   ,'" . $_mail["mail"] . "'
                                   ,'" . $_login["login"] . "'
                                   ,'" . md5($_password["password"]) . "'
                                   ,'" . $_Os["Os"] . "'
                                   )
      			                  ");   
      			               if ($sql > 1){
											$message = "la compte viens d'etre creer";
											$message .= '<a href="index.php">Retour</a>';
					}	
}
?>
<html>
<head><title>session d'enregistrement</title></head>
<body><fieldset>
<legend><b>Vos cordonnees</b></legend>
<table>
<tr><td>Nom : </td><td><input type="text name="nom" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Prenom : </td><td><input type="text name="prenom" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Age : </td><td><input type="text name="age" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Ville : </td><td><input type="text name="ville" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Mail : </td><td><input type="text name="mail" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Login : </td><td><input type="text name="login" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Password : </td><td><input type="password" name="password" size="20"maxlenght="20"/>
</td></tr>
<tr><td>confirmation du password : </td><td><input type="password" name="conf" size="20"maxlenght="20"/>
</td></tr>
<tr><td>Os utilise : </td><td><input type="text name="Os" size="20"maxlenght="20"/>
</td></tr>
</table>
<tr>
<td><input type="reset" value=" effacer " ></td>
<td><input type="submit"value=" Envoyer " name="envoyer"></td>
</fieldset>
<p>
<?php echo $message ?>
</p>
</form>
</tr>
</body>
</html>

j ai fais exprès de ne pas mettre de ponctuation, si y a des remarques n'ésiter pas ,je vous dit merci à l'avance pour votre aide . [/php][/code][/b]

Posté : 25 juin 2009, 00:22
par AB
D'après ce que tu dis, il y a beaucoup de disfonctionnements...
Un tuto avec code fonctionnel ici http://www.phpfrance.com/forums/voir_sujet-242539.php

Posté : 25 juin 2009, 09:44
par zyriuse75
j'ai trouver mon problème pour le bouton envoyer j'avais supprimer par erreur le form
par contre pour le reste j 'arrive pas à trouver

Posté : 25 juin 2009, 09:50
par charabia
D'où sort tout ça ?

$_nom['nom']
$_prenom['prenom']
$_age['age'] ...etc ?

ça ne devrait pas plutôt être $_POST['nom'], $_POST['prenom'] ...etc ?

Et puis un conseil en passant, un code lisible, bien aéré c'est méga important. Si tu regardes le tien, on peut dire que c'est un peu le contraire. Pour trouver des erreurs dedans c'est la panade.

Par exemple

Code : Tout sélectionner

<tr><td>Os utilise : </td><td><input type="text name="Os" size="20"maxlenght="20"/>
Rien que dans cette portion tu as des erreurs.

Posté : 25 juin 2009, 11:58
par zyriuse75
j ai corriger et dire que je ne l'avais pas vue hier soir :shock: merci à toi charabia
maintenant il ne me reste plus que un seul problème ji arrive ji arrive :lol: :lol: des que je vais sur la page enregistrement il me créer un utilisateur et me dit le compte à bien été créer alors que j ai rien rentre. :shock:

Posté : 25 juin 2009, 14:18
par charabia
tu nous remets le code corrigé ?

Posté : 25 juin 2009, 15:11
par zyriuse75
excuse moi je penser l'avoir déposer
<?php
include ('connect_bdd.php');

	if (isset($_post['nom'])&& isset($_post['prenom'])&& isset($_post['age'])&& isset($_post['ville'])&& isset($_post['mail']) && isset($_post['login'])&& isset($_post['password'])&& isset($_post['confirmation'])&& isset($_post['Os'])){
		extract ($_post);
				}
	
	if (!empty($_post) && !empty($_post) && !empty($_post) && !empty($_post))
				{
					$message = "veuillez remplir les case";
				}
				

	 if(!ereg("^[A-Za-z0-9_]{4,20}$", $_post["login"]))
	 			{
    				$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caracteres<br />\n";
    			}
    			
  	 else if(!ereg("^[A-Za-z0-9]{4,}$", $_post["password"]))
				{
  	 				$message = "Votre mot de passe doit comporter au moins 4 caracteres";
			   }
    
 	 else if($_post["password"] != $_post["confirmation"])
				{
    				$message = "Votre mot de passe n'a pas ete correctement confirme";
  				}
   
    else if(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",$_post["mail"]))
				{
    				$message = "Votre adresse e-mail n'est pas valide";
   			}
   			
   			
 		$sql = mysql_query("
                    SELECT login,mail
                    FROM membre
                    WHERE login = '" . $_post["login"] . "'
                    OR mail = '" . $_post["mail"] . "'");


if (!$sql)
    {
      $message =" Impossible de verifier votre authenticiter";
	 }
	 
    else
    {
    if (mysql_num_rows($sql) > 0)                    
     
     while($row = mysql_fetch_array($sql))
     {
        if($_post["login"] == $row["login"])
        
                              {
                                   $message = "Le nom d'utilisateur " . $_post["login"];
                                   $message .= "est deja utilise";
                              }
                              else if($_post["mail"] == $row["mail"])
                              {
                                   $message = "L'adresse mail " . $_post["mail"];
                                   $message .= "est deja utilisee";
                              }
                              
                         }
                                                                    
                         // Création du compte utilisateur
                         $sql = mysql_query("
                              INSERT INTO membre(
                                   nom
                                   , prenom
                                   , age
                                   , ville
                                   , mail
                                   , login
                                   , password
                                   , Os
                              )
                              VALUES(
                                   '" . $_post["nom"] . "'
                                   ,'" . $_post["prenom"] . "'
                                   ,'" . $_post["age"] . "'
                                   ,'" . $_post["ville"] . "'
                                   ,'" . $_post["mail"] . "'
                                   ,'" . $_post["login"] . "'
                                   ,'" . md5($_post["password"]) . "'
                                   ,'" . $_post["Os"] . "'
                                   )
      			                  ");   
      			               if ($sql === true){
											$message = "la compte viens d'etre creer";
											$message .= '<a href="index.php"> Retour</a>';
					}	
				
}


?>


<html>
<head><title>session d'enregistrement</title></head>
<body>

<form  method="post" action="#">
<form  action="" class="css">
<fieldset>

<legend><b>Vos cordonnees</b></legend>
<table>

<label><tr><td>Nom : </td><td><input type="text" name="nom" id="nom" size="20"maxlenght="20"/>
</td></tr></label>

<tr><td>Prenom : </td><td><input type="text" name="prenom" size="20"maxlenght="20"/>
</td></tr>

<tr><td>Age : </td><td><input type="text" name="age" size="20"maxlenght="20"/>
</td></tr>

<tr><td>Ville : </td><td><input type="text" name="ville" size="20"maxlenght="20"/>
</td></tr>

<tr><td>Mail : </td><td><input type="text" name="mail" size="20"maxlenght="20"/>
</td></tr>

<tr><td>Login : </td><td><input type="text" name="login" size="20"maxlenght="20"/>
</td></tr>

<tr><td>Password : </td><td><input type="password" name="pass" size="20"maxlenght="20"/>
</td></tr>

<tr><td>confirmation du password : </td><td><input type="password" name="confirm" size="20"maxlenght="20"/>
</td></tr>

<tr><td>Os utilise : </td><td><input type="text" name="Os" size="20"maxlenght="20"/>
</td></tr>

</table>
<tr>

<td><input type="reset" value=" effacer " ></td>
<td><input type="submit"value=" Envoyer " name="envoyer"></td>

</fieldset>

<p>
<?php echo $message ?>
</p>

</form>
</tr>
</body>
</html>
encore merci pour t ai reponse et de ton aide :) [/php]

Posté : 25 juin 2009, 15:13
par charabia
Pourquoi tu as 2 FORM sans aucune action ?

Posté : 25 juin 2009, 17:57
par zyriuse75
une faute d'inattention de ma part.
par contre j arrive pas à régler le problème comme quoi il vient a créer un compte à chaque actualisation, quand je remplit les champs et que je clique sur envoyer il n'y a aucun compte qui se créer

merci pour l'aide

Posté : 25 juin 2009, 18:07
par dunbar
une faute d'inattention de ma part.
par contre j arrive pas à régler le problème comme quoi il vient a créer un compte à chaque actualisation, quand je remplit les champs et que je clique sur envoyer il n'y a aucun compte qui se créer

merci pour l'aide
Rajoute l'affichage des erreurs MySQl peut-être :?:
if ($sql === true){
                                            $message = "la compte viens d'etre creer";
                                            $message .= '<a href="index.php"> Retour</a>';
                    } else
	                    	{
	                    		$message = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

	                       }
De plus au risque de dire une bêtise mais quand tu fais extract() $_POST['login'] devient $login par exemple.
Donc il faudrait faire un INSERT de $login et non pas $_POST['login'] :wink:

Posté : 26 juin 2009, 11:19
par zyriuse75
j ai rajouter le message
$message = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
merci pour ton aide dumbar

par contre la je commence vraiment à sécher pour trouver la solution a mon autre problème comme quoi il vient à me créer un compte des que j'actualise la page et nom quand on rentre les données
[/php]

Posté : 26 juin 2009, 14:28
par charabia
Si un enregistrement se fait à chaque rechargement de ta page c'est que tes conditions ne sont pas prises en compte.

Tu détectes en premier lieu l'action submit avec un isset($_POST['envoyer']) pour dire Si on clique sur envoyer on agit.

Ensuite tu fais tes conditions
if
{
//erreur1
}
elseif
{
//erreur2
}
elseif
{
//erreur3
}
else
{
//insertion données
}

Posté : 26 juin 2009, 14:30
par dunbar
merci pour ton aide dumbar
De rien, mais charabia et AB sont est là aussi :) , de plus pour info c'est dunbar et pas dumbar :evil: :wink:

Posté : 26 juin 2009, 14:50
par zyriuse75
desoler d'avoir oublier charabia,AB,et dunbar dans mes remerciement pour votre aide à m aider à trouver mon erreur je vais aller regarder sa de plus prés .

bonne journée à vous tous à bientôt :lol: :lol:

Posté : 26 juin 2009, 17:18
par zyriuse75
j ai réussit à situer le problème il à l'air de venir de cette ligne
if (!$sql)
    {
    $message =" Impossible de verifier votre authenticiter";
} 
si je viens à enlever la ligne il me dit que mon nom doit comporter entre 4 et 20 caractère j 'ai beau relire et relire , j ai vraiment du mal à la trouver cette erreur[/php]