inscription vide apres validation

inscription vide apres validation - PHP - Programmation

Marsh Posté le 23-09-2011 à 18:48:46    

Bonsoir,  
 
j'ai un soucis avec ma validation d'inscription coté administrateur.
 
explication:  
 
-des que je reçois des inscriptions sur ma page validation.php je les valides et par la mêmes occasion des inscriptions vierges a chaque rafraichissement de la page, comment évité cela ??
 
 
voici ma page inscription.php
 

Code :
  1. <?php
  2. include('config.php');
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6.     <head>
  7.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8.         <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
  9.         <title>Inscription</title>
  10.     </head>
  11.     <body>
  12.      <div class="header">
  13.          <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
  14.     </div>
  15. <?php
  16. //On verifie que le formulaire a ete envoye
  17. if(isset($_POST['pseudo'], $_POST['motdepasse'], $_POST['passverif'], $_POST['email']) and $_POST['pseudo']!='')
  18. {
  19. //On enleve l'echappement si get_magic_quotes_gpc est active
  20. if(get_magic_quotes_gpc())
  21. {
  22.  $_POST['pseudo'] = stripslashes($_POST['pseudo']);
  23.  $_POST['motdepasse'] = stripslashes($_POST['motdepasse']);
  24.  $_POST['passverif'] = stripslashes($_POST['passverif']);
  25.  $_POST['email'] = stripslashes($_POST['email']);
  26. }
  27. //On verifie si le mot de passe et celui de la verification sont identiques
  28. if($_POST['motdepasse']==$_POST['passverif'])
  29. {
  30.  //On verifie si le mot de passe a 6 caracteres ou plus
  31.  if(strlen($_POST['motdepasse'])>=6)
  32.  {
  33.   //On verifie si l'email est valide
  34.   if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
  35.   {
  36.    //On echape les variables pour pouvoir les mettres dans une requette SQL
  37.    $pseudo = mysql_real_escape_string($_POST['pseudo']);
  38.    $motdepasse = mysql_real_escape_string($_POST['motdepasse']);
  39.    $email = mysql_real_escape_string($_POST['email']);
  40.    //On verifie s'il n'y a pas deja un utilisateur inscrit avec le pseudo et le mail choisis
  41.    $dn = mysql_num_rows(mysql_query('select id from connexion where pseudo="'.$pseudo.'"'));
  42.    if($dn==0)
  43.    {
  44.     //On recupere le nombre d'utilisateurs pour donner un identifiant a l'utilisateur actuel
  45.     $dn2 = mysql_num_rows(mysql_query('select id from validation'));
  46.     $id = $dn2+1;
  47.     //On enregistre les informations dans la base de donnee
  48.     if(mysql_query('insert into validation(id, pseudo, motdepasse, email) values ('.$id.', "'.$pseudo.'", "'.$motdepasse.'", "'.$email.'" )'))
  49.     {
  50.      //Si ca a fonctionne, on n'affiche pas le formulaire
  51.      $form = false;
  52. ?>
  53. <div class="message">Vous avez bien &eacute;t&eacute; inscrit. Vous pouvez dor&eacute;navant vous connecter.<br />
  54.   Un mail de confirmation viens de vous etre envoyer avec vos identifiants de connexion.<br /></div>
  55. <div class="message"><a href="connexion.php">Se connecter</a></div>
  56. <?php
  57.     }
  58.     else
  59.     {
  60.      //Sinon on dit quil y a eu une erreur
  61.      $form = true;
  62.      $message = 'Une erreur est survenue lors de l\'inscription.';
  63.     }
  64.    }
  65.    else
  66.    {
  67.     //Sinon, on dit que le pseudo voulu est deja pris
  68.     $form = true;
  69.     $message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
  70.    }
  71.   }
  72.   else
  73.   {
  74.    //Sinon, on dit que l'email n'est pas valide
  75.    $form = true;
  76.    $message = 'L\'email que vous avez entr&eacute; n\'est pas valide.';
  77.   }
  78.  }
  79.  else
  80.  {
  81.   //Sinon, on dit que le mot de passe n'est pas assez long
  82.   $form = true;
  83.   $message = 'Le mot de passe que vous avez entr&eacute; contien moins de 6 caract&egrave;res.';
  84.  }
  85. }
  86. else
  87. {
  88.  //Sinon, on dit que les mots de passes ne sont pas identiques
  89.  $form = true;
  90.  $message = 'Les mots de passes que vous avez entr&eacute; ne sont pas identiques.';
  91. }
  92. }
  93. else
  94. {
  95. $form = true;
  96. }
  97. if($form)
  98. {
  99. //On affiche un message s'il y a lieu
  100. if(isset($message))
  101. {
  102.  echo '<div class="message">'.$message.'</div>';
  103. }
  104. //On affiche le formulaire
  105. ?>
  106. <div class="content">
  107.     <form action="inscription.php" method="post">
  108.         Veuillez remplir ce formulaire pour vous inscrire:<br />
  109.         <div class="center">
  110.             <label for="pseudo">Nom d'utilisateur</label><input type="text" name="pseudo" value="<?php if(isset($_POST['pseudo'])){echo htmlentities($_POST['pseudo'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
  111.             <label for="motdepasse">Mot de passe<span class="small">(6 caract&egrave;res min.)</span></label><input type="motdepasse" name="motdepasse" /><br />
  112.             <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span></label><input type="motdepasse" name="passverif" /><br />
  113.             <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
  114.             <input type="submit" value="Envoyer" />
  115.  </div>
  116.     </form>
  117. </div>
  118. <?php
  119. }
  120. ?>
  121.  <div class="foot"><a href="<?php echo $url_home; ?>">Retour &agrave; l'accueil</a> - <a href="http://www.spacefight.fr">Spacefight</a></div>
  122. </body>
  123. </html>


 
et voici ma page validation.php
 

Code :
  1. <?php
  2. mysql_connect("localhost", "root", "" );
  3. mysql_select_db("basededonnees" );
  4. $quete = mysql_query("SELECT * FROM validation" );
  5. while($validation = mysql_fetch_array($quete))
  6. {
  7. echo 'Pseudo: ';
  8. echo $validation['pseudo'];
  9. echo ' Mot de passe: ';
  10. echo $validation['motdepasse'];
  11. echo ' E-mail: ';
  12. echo $validation['email'];
  13. echo '<a href="validation.php?action=accepter&id='.$validation['id'].'">Accepter</a>';
  14. echo '<a href="validation.php?action=refuser&id='.$validation['id'].'">Refuser</a>';
  15. echo '<br/>';
  16. }
  17. if(isset($_GET['action']) AND isset($_GET['id']))
  18. {
  19. $action = $_GET['action'];
  20. if($action == "accepter" )
  21. {
  22.  $id = $_GET['id'];
  23.  $quete2 = mysql_query("SELECT * FROM validation WHERE id='$id'" );
  24.  $connexion = mysql_fetch_array($quete2);
  25.  $pseudo = $connexion['pseudo'];
  26.  $motdepasse = $connexion['motdepasse'];
  27.  $email = $connexion['email'];
  28.  $dn = mysql_num_rows(mysql_query('select id from connexion'));
  29.  $id = $dn+1;
  30.  mysql_query("INSERT INTO connexion VALUES('$id', '$pseudo', '$motdepasse', '$email')" );
  31.  $id = $_GET['id'];
  32.  mysql_query("DELETE FROM validation WHERE id='$id'" );
  33. }
  34. elseif($action == "refuser" )
  35. {
  36.  $id = $_GET['id'];
  37.  mysql_query("DELETE FROM validation WHERE id='$id'" );
  38. }
  39. }
  40. ?>


Message édité par BrutAlow le 23-09-2011 à 18:59:50
Reply

Marsh Posté le 23-09-2011 à 18:48:46   

Reply

Marsh Posté le 23-09-2011 à 21:46:31    

1) je te conseille de faire tes formulaires en ajax, c'est beaucoup plus gracieux, tu restes sur la même page, tu envoies en arrière plan une requête ajax avec tes paramètres, ca valide / inscrit le bonhomme si pas déjà inscrit, et ça renvoie OK ou un message d'erreur que tu attrapes et affiche. Tu évites les chargements de page pour rien.
 
2) Ton problème est que tu n'as pas de marqueur d'enregistrement, c'est le principe du sémaphore / jeton d'inscription. Quand ton bonhomme s'inscrit, tu mets une variable de session style $_SESSION['registered'] = true; et tu check cette variable avant l'affichage de ton formulaire style if(!isset($_SESSION['registered']) || !$_SESSION['registered']) { /*Afficher le formulaire*/ } else { /*DTC*/ }


Message édité par CyberDenix le 23-09-2011 à 21:46:54
Reply

Marsh Posté le 27-09-2011 à 13:13:25    

au passage,ça me semble louched :

Code :
  1. $dn = mysql_num_rows(mysql_query('select id from connexion'));
  2. $id = $dn+1;


comment tu fais si t'as des trous dans les id ?
ID 1, 2, 4
ton sélect + num_rows retourne 3
et ton $id vaut $dn+1 = 4 or l'id 4 existe déjà ...  [:cordelius]


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed