Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1047 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Mes données ne s'inscrivent pas dans ma BDD :'(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mes données ne s'inscrivent pas dans ma BDD :'(

n°1933970
playstatio​nn
Posté le 20-10-2009 à 21:01:26  profilanswer
 

Bonjour :D
voilà, je vous présente mon code qui est presque fonctionnel. Les erreurs s'affichent à bon escient, et lorsque l'inscription est OK, le mail est envoyé. Le soucis c'est que il me dit que le membre n'est pas dans la table donc le script a une défaillance quelque part.
 

Spoiler :

<?php include("../includes/head1.php" ); ?>
 
 
<body>
 
<!-- wrap starts here -->
<div id="wrap">
   
 <?php include("../includes/menu2.php" ); ?>    
   
 <!-- content-wrap starts here -->
 <div id="content-wrap">
   
  <div id="main">    
     
      <?php //texte début  
   ?>
   
  <?php
 
if(isset($_SESSION['log']['pseudo']) AND !empty($_SESSION['log']['pseudo'])){
 
?><p class="erreur2">Vous êtes déjà inscrit sur Énigmatique</p>
 
 <?php
}
else
{
?><?php
/* Vérifie que les inscriptions sont autorisées */
if(STATUSINSC == 1){
 
 if(isset($_POST['email']) AND isset($_POST['pseudo']) AND isset($_POST['password']) AND isset($_POST['password2']) AND isset($_POST['pseudo'])){
 
  /* Vérifie que les variables ne sont pas vide */
  if(!empty($_POST['email']) AND !empty($_POST['pseudo']) AND !empty($_POST['password']) AND !empty($_POST['password2'])){
 
   /* Vérifie que l'email est valide */
   if(isMail($_POST['email'])){
   
    $sql = 'SELECT id, email, pseudo, password FROM _users WHERE pseudo="'. $_POST['pseudo'] .'"';
    $req = $connexion->query($sql);
    $req->setFetchMode(PDO::FETCH_OBJ);
    $res = $req->rowCount();
    $requetes++; /* Ajouter +1 à la variable requetes */
     
    /* Vérifie si le pseudo est déjà utilisé */
    if(($res) == 0){
     
     /* Vérifie que le mot de passe contient au moins 8 caractères */
     if(strlen($_POST['password']) >= NBCARSMIN){
     
      /* Vérifie si les deux mots de passes sont pareils */
      if($_POST['password'] == $_POST['password2']){
       
       /* Vérifie que le pseudo contient au moins 2 caractères */
       if(strlen($_POST['pseudo']) >= NBCARSMINP){
       
        /* Vérifie que le pseudo est valide (sans caractères spéciaux sauf - et _ ) */
        if(preg_match("#^[a-zA-Z0-9-_]+$#", $_POST['pseudo'])){
         
         /* Tout est bon, ajout dans la base de données */
         
         /* Déclaration et traitement */
         $email = mysql_real_escape_string(htmlentities(addslashes($_POST['email'])));
         $pseudo = mysql_real_escape_string(htmlentities(addslashes($_POST['pseudo'])));
         $password = mysql_real_escape_string(sha1($_POST['password']));
         /* dateinscription = NOW() */
         $prenom = mysql_real_escape_string(ucfirst($_POST['prenom']));
         $nom = mysql_real_escape_string(ucfirst($_POST['nom']));
         $datenaissance = ''.$_POST['annee_naissance'].'-'.$_POST['mois_naissance'].'-'.$_POST['jour_naissance'].'';
         $pays = mysql_real_escape_string(ucfirst($_POST['pays']));
         $ville = mysql_real_escape_string(ucfirst($_POST['ville']));
         $typedemembre = 'Membre'; // Type par défaut
         $points = 0;
         /* Compte activé = 0 */
         $codeactivation = chaineAleatoire(18);
 
 
         
         /* Insertion dans la base de données */
         $sql = 'INSERT INTO _users VALUES("", "'. $email .'", "'. $pseudo .'", "'. $password .'", NOW(), "'. $prenom .'", "'. $nom .'", "'. $datenaissance .'", "'. $pays .'", "'. $ville .'", "'. $typedemembre .'", "'. $codeactivation .'", "'. $points .'" )';
         $connexion->exec($sql);
         $requetes++; /* Ajouter +1 à la variable requetes */
         
         $contenumessage = '
         Bonjour,
         
         vous venez de vous inscrire sur Enigmatique, cependant votre compte n\'est pour le moment pas actif.
         Pour l\'activer, vous devez cliquer sur ce lien, si ce lien ne fonctionne pas, essayez de faire un copier/coller dans la barre d\'adresse de votre navigateur.
         En cas de probleme d\'activation, veuillez contacter l\'administrateur.
         
         Votre lien : '. CHEMINROOT .'activation/?&pseudo='. $pseudo .'&ac='. $codeactivation .'
         
         A bientôt sur Enigmatique, et bonne visite.
         
 
         ';
         
         echo '<p class="ok">Votre inscription s\'est bien effectuée. Vous allez recevoir un email pour activer votre compte</p>';
         
         mail($email, "Activation de votre compte", $contenumessage);
         
         
         
        }
        else{
         
         echo '<p class="erreur2">Votre pseudo est incorrecte, il ne doit être composé que de caractères alphanumériques ou des symboles suivants : - _</p>';
         
        }
       
       }
       else{
       
        echo '<p class="erreur2">Votre pseudo doit être composé d\'au moins 2 caractères</p>';
       
       }
       
      }
      else{
       
       echo '<p class="erreur2">Les deux mots de passes sont différents</p>';
       
      }
     
     }
     else{
     
      echo '<p class="erreur2">Votre mot de passe doit être composé d\'au moins 8 caractères</p>';
     
     }
     
    }
    else{
     
     echo '<p class="erreur2">Le pseudo <em>'. $_POST['pseudo'] .'</em> est déjà utilisé par quelqu\'un d\'autre</p>';
     
    }
   
   }
   else{
   
    echo '<p class="erreur2">Le format de votre email est invalide</p>';
   
   }
 
  }
  else{
 
   echo '<p class="erreur2">Veuillez remplir tous les champs obligatoires</p>';
 
  }
   
 }
 
}
else{
 
 echo '<p class="erreur2">Les inscriptions sont actuellement fermées !</p>';
 
}
 
?>
 
 
 
<form method="post" action="">
 
 <p><em>* Champs obligatoires</em><br /><br /><br />
 
 <label for="email">Votre email * :</label> <input type="text" name="email" id="email" size="28" /><span class="erreur"></span><br /><br />
 <label for="pseudo">Votre pseudo * :</label> <input type="text" name="pseudo" id="pseudo" size="28" /><span class="erreur"></span><br /><br />
 <label for="password">Mot de passe * : </label> <input type="password" name="password" id="password" size="28" /><br /><br />
 <label for="password2">Confirmation * :</label> <input type="password" name="password2" id="password2" size="28" /><span class="erreur"></span><br /><br /><br />
 
 <label for="prenom">Votre prénom :</label> <input type="text" name="prenom" id="prenom" size="28" /><br /><br />
 <label for="nom">Votre nom :</label> <input type="text" name="nom" id="nom" size="28" /><br /><br />
 
 <label for="datenaissance">Naissance :</label>
 <select name="jour_naissance">
  <option value="01">1</option>
  <option value="02">2</option>
  <option value="03">3</option>
  <option value="04">4</option>
  <option value="05">5</option>
  <option value="06">6</option>
  <option value="07">7</option>
  <option value="08">8</option>
  <option value="09">9</option>
  <option value="10">10</option>
  <option value="11">11</option>
  <option value="12">12</option>
  <option value="13">13</option>
  <option value="14">14</option>
  <option value="15">15</option>
  <option value="16">16</option>
  <option value="17">17</option>
  <option value="18">18</option>
  <option value="19">19</option>
  <option value="20">20</option>
  <option value="21">21</option>
  <option value="22">22</option>
  <option value="23">23</option>
  <option value="24">24</option>
  <option value="25">25</option>
  <option value="26">26</option>
  <option value="27">27</option>
  <option value="28">28</option>
  <option value="28">29</option>
  <option value="30">30</option>
  <option value="31">31</option>
 </select>
 
 <select name="mois_naissance">
  <option value="01">Janvier</option>
  <option value="02">Février</option>
  <option value="03">Mars</option>
  <option value="04">Avril</option>
  <option value="05">Mai</option>
  <option value="06">Juin</option>
  <option value="07">Juillet</option>
  <option value="08">Août</option>
  <option value="09">Septembre</option>
  <option value="10">Octobre</option>
  <option value="11">Novembre</option>
  <option value="12">Décembre</option>
 </select>
 
 <select name="annee_naissance">
  <?php
   
   $date = date("Y" )-101;
   while($date < date("Y" )){
   
    $date++;
    echo '<option value="'. $date .'">'. $date .'</option>';
   
   }
   
  ?>
 </select>
 <br /><br />
 
 <label for="pays">Pays :</label> <input type="text" name="pays" id="pays" size="28" /><br /><br />
 <label for="ville">Ville :</label> <input type="text" name="ville" id="ville" size="28" /><br /><br />
 
 <?php  
 
 if(STATUSINSC == 1){
 
 echo '<input type="submit" id="submit" value="S\'inscrire" />';
 
 }
 
 ?>
 
 </p>
 
</form>
 <?php }  
//texte fin ?></div>
   
   <?php  
include("../includes/sidebar1.php" );
?>
   
     
 <!-- content-wrap ends here -->  
 </div>
     
 <!--footer starts here-->
<?php include("../includes/foot.php" ); ?>
 
<!-- wrap ends here -->
</div>
 
</body>
</html>


 
merci de votre aide :)

mood
Publicité
Posté le 20-10-2009 à 21:01:26  profilanswer
 

n°1934018
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 20-10-2009 à 23:25:35  profilanswer
 

et dans les logs Apache tu n'as rien ?
 
ceci dit, même s'il y a de l'objet derrière, je trouve bizarre de donner "exec" pour nom à une méthode ... :/


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1934050
skeye
Posté le 21-10-2009 à 07:42:29  profilanswer
 

1) Les chaines de caractères dans une requetes sont délimitées par des simples quotes, pas des doubles.
2) On peut voir ton objet connexion? [:pingouino]


---------------
Can't buy what I want because it's free -
n°1934063
rufo
Pas me confondre avec Lycos!
Posté le 21-10-2009 à 09:43:56  profilanswer
 

ça serait bien de récupérer le code d'erreur de l'exécution de ta requête sql. :/
et faire commencer le nom d'une table par un _, je me demande si c'est une bonne idée...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1934181
playstatio​nn
Posté le 21-10-2009 à 13:34:39  profilanswer
 

Non mais en fait ça marchait il y a encore 3 jours. Là le truc c'est que j'ai supprimé ma case  : Avatar.  

n°1934511
badaboumsp​lash
Posté le 22-10-2009 à 13:21:48  profilanswer
 

Bonjour,
 
Tu as bien regardé comment tu enregistres tes valeurs ?  :heink:  
 

Code :
  1. $email = mysql_real_escape_string(htmlentities(addslashes($_POST['email'])));
  2.          $pseudo = mysql_real_escape_string(htmlentities(addslashes($_POST['pseudo'])));
  3.          $password = mysql_real_escape_string(sha1($_POST['password']));
  4.          /* dateinscription = NOW() */
  5.          $prenom = mysql_real_escape_string(ucfirst($_POST['prenom']));
  6.          $nom = mysql_real_escape_string(ucfirst($_POST['nom']));
  7.          $datenaissance = ''.$_POST['annee_naissance'].'-'.$_POST['mois_naissance'].'-'.$_POST['jour_naissance'].'';
  8.          $pays = mysql_real_escape_string(ucfirst($_POST['pays']));
  9.          $ville = mysql_real_escape_string(ucfirst($_POST['ville']));
  10.          $typedemembre = 'Membre'; // Type par défaut
  11.          $points = 0;
  12.          /* Compte activé = 0 */
  13.          $codeactivation = chaineAleatoire(18);


 
htmlentities + addslashes qui n'ont rien à faire en ce lieu de ton code.
un mysql_real_escape_string sur un sha1 ? :pt1cable:  
Des ucfirst() on ne peut plus douteux, serait mieux d'utiliser une casse insensible pour les colonnes concernées de ta table.
A moins d'avoir mal lu ton code,n je ne vois rien qui controle la date de naissance => injection sql.

n°1934531
rufo
Pas me confondre avec Lycos!
Posté le 22-10-2009 à 14:15:06  profilanswer
 

les ucfirst, je pense que c'est pour le réaffichage des données dans l'IHM.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Mes données ne s'inscrivent pas dans ma BDD :'(

 

Sujets relatifs
Lien vers une base de données localInsérer des données dans un fichier PDF avec PHP
Faire le lien entre les données d'un array[Boost::asio] Acces a des donnees bas niveau
[PostgreSQL 8.4] restaurer base de données dumpOpen Office: Base de données
Modéliser une BDD d'un produit assembléQuoi qui enregistre les données?
Probleme insertion données Fichier Excel 
Plus de sujets relatifs à : Mes données ne s'inscrivent pas dans ma BDD :'(


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR