Infos non enregistrées sur ma bdd

samzirt

samzirt Le 26 janvier 2017 à 17:24 (Édité le 25 janvier 2019 à 17:53)

Bonjour/Bonsoir,

J'ai suivi le cour de Boris sur le php et notamment sur créer un espace membre.
voila mon problème: lorsque je rempli mon formulaire , mes données ne sont pas enregistrées sur ma base de données. De plus, je n'arrive pas a me connecter avec ce compte crée.

Merci de votre aide.
Julian

Julian Le 26 janvier 2017 à 17:36

Ton code ?
samzirt

samzirt Le 26 janvier 2017 à 17:51

excusez moi, voici mon 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=\"acceuil.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 !";
   }
}
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Inscription</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 '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>
   </body>
</html>
twinny

twinny Le 26 janvier 2017 à 19:23 (Édité le 26 janvier 2017 à 19:29)

Salut, tiens essaye ça :

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['check']))
{
  $erreur = "*****************************";
}else{
  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)
            {
              $longueurKey = 15;
              $key= "";
              for ($i=1;$i<$longueurKey;$i++)
              {
                $key .= mt_rand(0,9);
              }
              $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, confirmekey) VALUES(?, ?, ?, ?)");
              $insertmbr->execute(array($pseudo, $mail, $mdp, $key));          
              include('mailconfirmationinscription.php');
              ?> 
               <div class="alert alert-info">
                  <strong>Success!</strong> Vous êtez maintenant inscrit ! Vous devez confirmer votre compte avant de pouvoir vous connecter <a href="login.php"> Pour vous connecter</a> | <a href="index.php">Pour retourner sur le site</a>
                </div>                                     
<?php
            }
            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 completes !";
  }
}
}
?>

<body ng-controller="RegisterCtrl" ng-app="myApp">
 <div class="container">
   <div id="signup">
      <div class="signup-screen">
         <div class="space-bot text-center">
            <h1>Inscription</h1>
           <div class="divider"></div>
         </div>
           <form class="form-register" method="post" name="register" action="" role="form" novalidate>
               <div class="input-field col s6">
              <input id="pseudo" type="text" class="validate" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>">
              <label for="pseudo">Nom d'utilisateur</label>
            </div>
            <div class="input-field col s6">
              <input id="mdp" type="password" class="validate" name="mdp" >
              <label for="mdp">Mot de passe</label>
             </div>
             <div class="input-field col s6">
              <input id="mdp2" type="password" name="mdp2" ng-model="mdp2" class="validate" >
              <label for="mdp2">Confirmation du mot de passe</label>
             </div>
             
             <div class="input-field col s6">
               <input id="mail" type="email" name="mail" ng-model="mail" class="validate"  value="<?php if(isset($mail)) { echo $mail; } ?>">
               <label for="mail">Email</label>
  
             <div class="input-field col s6">
               <input id="mail2" type="email" name="mail2" ng-model="email" class="validate" value="<?php if(isset($mail2)) { echo $mail2; } ?>">
               <label for="mail2">Confirmation de l'Email</label>
              </div>
              <div class="input-field col s6">
              <input type="checkbox" class="filled-in" id="filled-in-box" name="check" />
              <label for="filled-in-box">J'accepte les conditions d'utilisation de Dofuscraft <a href="cgu.html" target="_blank">CGU</a></label>
              </div><br/>
              <div class="space-top text-center">
               <button ng-disabled="form-register.$invalid" class="waves-effect waves-light btn done" name="forminscription">
               <i class="material-icons left">done</i> Valider
               </button>
               <a href="<?= $previous ?>">
               <button type="button" class="waves-effect waves-light btn cancel">
               <i class="material-icons left">clear</i>Retour
               </button>
               </a>
              </div>
              <?php
      if(isset($erreur))
      {
        echo '<font color="red">'.$erreur."</font>";
      }
      ?>
             </form>
           </div>
        </div>
    </div>
</body>
Balatharas

Balatharas Le 26 janvier 2017 à 19:27

Salut 😀 !
Désolé, je ne t'apporterait pas mon aide si tu n'apprends pas a cliquer sur le petit bouton [CODE] qui n'est pas la pour la déco...
twinny

twinny Le 26 janvier 2017 à 19:28

+1 Beignet
samzirt

samzirt Le 26 janvier 2017 à 20:13

Voici mon 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=\"acceuil.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 !";
   }
}
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Inscription</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 '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>
   </body>
</html>
samzirt

samzirt Le 26 janvier 2017 à 20:15

Merci twinny mais ça ne marche toujours pas :'(
TheFlameflo

TheFlameflo Le 27 janvier 2017 à 01:53 (Édité le 27 janvier 2017 à 01:55)

Salut !

Reprenons le problème à la base : tu n'arrives pas à enregistrer les données dans ta BDD et (logiquement) tu ne peux pas te connecter.

Bref, remplaces le code de connexion à la base de données par ça :
try
{ 
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');

} 
catch (Exception $e) 
{ 
die('Erreur : ' . $e->getMessage()); 
}
Si le problème est la connexion à la base de donnée, tu auras une erreur qui s'affichera.
Si c'est le cas, donne nous l'erreur complète.

Sinon, il y a deux vérifications "basiques" à faire :
  • Vérifier si le nom de la table correspond
  • Vérifier si le nom des champs correspond

J'espère t'avoir aidé ! 😀
samzirt

samzirt Le 27 janvier 2017 à 20:46

Merci The Flameflo mais ca ne m'ecrit aucun message d'erreur et le probleme n'est pas résolu.
Je pense que le problème vient de ma page d'édition du profil mais je ne suis pas sur.

Voici mon code de cette page:
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
   if (isset($_SESSION['id']))
   {
      $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
      $requser->execute(array($_SESSION['id']));
      $user = $requser->fetch();
      if (isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) 
         {
               $newpseudo = htmlspecialchars($_POST['newpseudo']);
               $insertprenom = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
               $insertprenom->execute(array($newpseudo, $_SESSION['id']));
         }
         elseif (isset($_POST['newpseudo']) AND empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo'])
         {
            header("Location:profil.php?id=".$_SESSION['id']);
         }
      if (isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail']) 
         {
               $newmail = htmlspecialchars($_POST['newmail']);
               $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
               $insertmail->execute(array($newmail, $_SESSION['id']));
         }
                  elseif (isset($_POST['newmail']) AND empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
         {
            header("Location:profil.php?id=".$_SESSION['id']);
         }
         
   
      if (isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2']))
         {
               $mdp1 = sha1($_POST['newmdp1']);
               $mdp2 = sha1($_POST['newmdp2']);
                  if ($mdp1 == $mdp2) 
                  {
                     $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
                     $insertmdp->execute(array($mdp1, $_SESSION['id']));
                  }
                  else
                  {
                     $erreur = "Vos mot de passe ne correspondent pas";
                  }
               
         }
         elseif (isset($_POST['newmdp1']) AND empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND empty($_POST['newmdp2']))
         {
            header("Location:profil.php?id=".$_SESSION['id']);
         }
         if (isset($_FILES['photodeprof']) AND !empty($_FILES['photodeprof']['name'])) 
         {
            $taillemax = 2097152;
            $extensionsvalides = array('jpg', 'jpeg', 'png');
            if ($_FILES['photodeprof']['size'] <= $taillemax) 
            {
               $extensionupload = strtolower(substr(strrchr($_FILES['photodeprof']['name'], '.'), 1));
                  if (in_array($extensionupload, $extensionsvalides)) 
                  {
                     $chemin = "membres/photodeprofil/" .$_SESSION['id'].".".$extensionupload;
                     $resultat = move_uploaded_file($_FILES['photodeprof']['tmp_name'], $chemin);
                        if ($resultat) 
                        {
                           $updatephotodeprofil = $bdd->prepare('UPDATE membres SET photodeprofil = 😋hotodeprofil WHERE id = :id');
                           $updatephotodeprofil->execute(array(
                                 'photodeprofil' => $_SESSION['id'].".".$extensionupload,
                                 'id' => $_SESSION['id']));
                        }   
                        else
                        {
                           $erreur = "Erreur lors de l'importation de votre photo de profil";
                        }
                  }
                  else
                  {
                     $erreur = "Votre photo de profil doit être au format jpg, jpeg ou png";
                  }
            }
            else
            {
               $erreur = "Votre photo de profil ne doit pas dépasser 2Mo";
            }
         }
      }
      
   
?>
<!DOCTYPE html>
   <html>
      <head>
         <Title>IND Chat</Title>
         <meta charset="utf-8" />
         <link rel="stylesheet" type="text/css" href="editionprofil.css" />
      </head>
   <body>
<header>
      <div id="img2" ><a href="acceuil.php" title="Acceuil de IND Co"> <img src="INDco.png"  /> </a></div>
      
</header>
<section>
<article><div id="Editionprofil" />
   <h4>Editer mon profil</h4><br />
      <form method="POST" action="" name="modifier2" enctype="multipart/form-data">
      <label><div id="lab1"><br /><br />Pseudo: <br /> </label></div>
         <input type="text" class="form3" name="newpseudo" placeholder="Pseudo" value="<?php if (isset($_SESSION['pseudo'])) 
         {
            echo $_SESSION['pseudo'];
         } ?>" /><br /><br />
      <label>Mail: <br /> </label>
         <input type="email" class="form3" name="newmail" placeholder="Mail" value="<?php if (isset($_SESSION['mail'])) 
         {
            echo $_SESSION['mail'];
         } ?>"" /><br /><br />
      <label>Mot de passe: <br /> </label>
         <input type="text" class="form3" name="newmdp1" placeholder="Mot de passe"/><br /><br />
      <label>Confirmation du mot de passe: <br /> </label>
         <input type="password" class="form3" name="newmdp2" placeholder="Confirmation mot de passe"/><br />
      <label>Photo de profil: <br/> </label>
         <input type="file" name="photodeprof" /><br /><br />
         <input type="submit" class="sub3" name="modifier" value="Editer mon profil" />
      
      </form>
   <?php 
      if (isset($erreur)) 
      {
         echo $erreur;
      }
   ?>
</article>
   </section>
</div>
<footer>
</footer>
   </body>
</html>
Merci de votre aide
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte