Inscription : le insert into ne fait rien

Résolu/Fermé
Utilisateur anonyme - Modifié par Nils0 le 15/08/2016 à 13:03
 Utilisateur anonyme - 15 août 2016 à 16:45
Bonjour, je suis en train de créer mon site internet mais j'ai un soucis quand je veux inscrire un membre dans la base de donnée :
voici le code :
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');

if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($mdp == $mdp2) {
                     $insertmbr = $bdd->prepare("INSERT INTO membres (pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $mail, $mdp));
                     $erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
                  } else {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               } else {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            } else {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         } else {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      } else {
         $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
      }
   } else {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>

<!DOCTYPE html>

<html>
   <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <link rel="icon" type="image/x-icon" href="images/logo.jpg" />
        <title> Le titre </title>
   </head>
   <body>
   <?php include("header.php"); ?> <!-- Titre avec le menu -->

      <div class="page">
         <h2>Inscrivez-vous dès maintenant</h2>
         <br /><br />
         <form method="POST" action="">
            <table>
               <tr>
                  <td align="right">
                     <label for="pseudo">Pseudo :</label>
                  </td>
                  <td>
                     <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail">Mail :</label>
                  </td>
                  <td>
                     <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail2">Confirmation du mail :</label>
                  </td>
                  <td>
                     <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp">Mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp2">Confirmation du mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
                  </td>
               </tr>
               <tr>
                  <td></td>
                  <td align="center">
                     <br />
                     <input type="submit" name="forminscription" value="Je m'inscris" />
                  </td>
               </tr>
            </table>
         </form>
         <?php if(isset($erreur)) { echo $erreur; } ?>
      </div>
   </body>
</html>


Il n'y pas de message d'erreur et je ne trouve pas l'erreur ...
Si quelqu’un pourrait m'aider, sa me serait vraiment utile
Merci d'avance
Nils0
A voir également:

1 réponse

Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié par Exileur le 15/08/2016 à 12:41
Salut,
Peut-être mettre un :
echo $erreur;


Aprés avoir défini les variables erreur ?

Cordialement

N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
0
Utilisateur anonyme
15 août 2016 à 12:50
merci de votre réponse
le
 echo $erreur;

me renvoie "votre compte a bien été créer" alors qu'il n'y a rien dans la base de donnée ...
0
Utilisateur anonyme
15 août 2016 à 13:02
j'ai modifié le code en mettant le php avant mais ça n'a rien changé
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié par Exileur le 15/08/2016 à 13:47
Pourquoi faire un :

 htmlspecialchars();


Cette fonction est faite pour l’échappement des caractères html avant l'affichage. Pas avant l'envoie dans une base de donnée.

Pour sécurisé les variables utilisateurs avant l'envoie dans une base de donnée tu dois utiliser la fonction prepare de pdo.

Essaye comme ça :

$query=$bdd->prepare('INSERT INTO membres (pseudo, mail, motdepasse) VALUES(:pseudo, :mail, :motdepasse)');

$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
$query->bindValue(':mail', $mail, PDO::PARAM_STR);
$query->bindValue(':motdepasse', $motdepasse, PDO::PARAM_STR);
$query->execute();


PDO::PARAM_STR permet d'indiquer qu'il s'agit d'une chaine de caractère.
Tu peux aussi utiliser PDO::PARAM_INT pour un nombre.

Je te conseille égallement de définir ton fichier de connexion comme ça :

$dsn = "mysql:dbname=DBNAME;host=ADRESSE_DE_LA_BASE;charset=utf8";
$user = 'USER';
$password = 'PASSWORD';

try {
    $bdd = new PDO($dsn, $user, $password);
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Échec lors de la connexion : ' . $e->getMessage();
}


Affin d'afficher les éventuelles erreurs SQL

Cordialement
0
Utilisateur anonyme
15 août 2016 à 14:09
merci mais ça ne marche toujours pas ...
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150 > Utilisateur anonyme
15 août 2016 à 14:37
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
0