[PHP] [WEB] Problème base de données [Résolu/Fermé]

Signaler
-
Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
-
Bonjour,
j'ai commencer la création de mon site web en HTML et j'ai décidé d'y intégrer mon espace membre. Donc sur YouTube je suis en train de suivre un tuto (PrimFX) mais j'ai un problème au moment du test pour inscrire un compte. Je remplis tous les champs jusqu'à avoir comme message: "Votre compte à bien été créé !" mais dans ma base de données je n'ai rien et donc je ne peux pas tester le module de connexion...
Voilà le code de mon module d'inscription (complet):
<?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']))
 {
  $pseudolenght = strlen($pseudo);
  if($pseudolenght <= 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, motdepase) VALUES(?, ?, ?) ");
       $insertmbr->execute(array($pseudo, $mail, $mdp));
       $erreur = "Votre compte a bien été créé !";
      }
      else
      {
       $erreur = "Les mots de passes ne correspondent pas !";
      }
     }
    }
    else
    {
     $erreur = "L'adresse mail entrée est déjà utilisée !";
    }
   }
    else
    {
     $erreur = "Les adresses e-mail ne correspondent pas !";
    }
  }
  else
  {
   $erreur = "Votre pseudo est trop long !";
  }
 }
 else
 {
  $erreur = "Tous les champs doivent être remplis !";
 }
}

?>


Désolé c'est pas très compréhensible mais bon...

4 réponses

Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
3 301
Bonjour,

Commence par mettre du TRY/CATCH sur l'execution de tes requêtes pour voir s'il n'y a pas un souci.
Par exemple :

try{
   $sql = "INSERT INTO membres  (pseudo, mail, motdepase) VALUES(?, ?, ?)";
   $params = array($pseudo, $mail, $mdp);
   $insertmbr = $bdd->prepare($sql);
   $insertmbr->execute($params);
}catch(Exception $e) {
    echo "<br>ERREUR ! ".$e->getMessage()."<br>";
    echo "<br>params : <br>";
    print_r($params);
}
$erreur = "Votre compte a bien été créé !";


Cordialement,
Jordane
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Bonjour jordane45 où dois-je mettre ce code ?
Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
3 301
A la place de celui contenu dans ton IF
 if($mdp == $mdp2)
      {
       $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepase) VALUES(?, ?, ?) ");
       $insertmbr->execute(array($pseudo, $mail, $mdp));
       $erreur = "Votre compte a bien été créé !";
      }

A transformer en :
 if($mdp == $mdp2)  {
       try{
          $sql = "INSERT INTO membres  (pseudo, mail, motdepase) VALUES(?, ?, ?)";
          $params = array($pseudo, $mail, $mdp);
          $insertmbr = $bdd->prepare($sql);
          $insertmbr->execute($params);
       }catch(Exception $e) {
           echo "<br>ERREUR ! ".$e->getMessage()."<br>";
           echo "<br>params : <br>";
           print_r($params);
      }
       $erreur = "Votre compte a bien été créé !";
   }
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Bonjour j'obtiens le même résultat avec votre code et avec le mien: rien dans ma base donc impossible de me connecter...
Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
3 301
C'est en effet peut être un souci de connexion.

Essayes ça :
<?php
// Reporte toutes les erreurs PHP (Voir l'historique des modifications)
error_reporting(E_ALL);

//-------------------------------------------------------------------------------------------//
// Connexion à la BDD*
//-------------------------------------------------------------------------------------------//
$serveur = "127.0.0.1";
$db_name = "espace_membre'";
$user = "root";
$password = "";
$dsn = "mysql:host=".$serveur.";dbname=".$db_name;

try {
    $bdd = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo 'Echec de la connexion : ' . $e->getMessage();
    exit;
}
//-------------------------------------------------------------------------------------------//

//Récupération des variables
 $pseudo = !empty($_POST['pseudo']) ? htmlspecialchars($_POST['pseudo']) :NULL;
 $mail = !empty($_POST['mail'])? htmlspecialchars($_POST['mail']) : NULL;
 $mail2 = !empty($_POST['mail2']) ? htmlspecialchars($_POST['mail2']) :NULL;
 $mdp = !empty($_POST['mdp']) ? sha1($_POST['mdp']):NULL;
 $mdp2 = !empty($_POST['mdp2']) ? sha1($_POST['mdp2']):NULL;
 
//traitement du submit
if(isset($_POST['forminscription'])){

 if($pseudo && $mail && $mail2 && $mdp && $mdp2) {
  $pseudolenght = strlen($pseudo);
  if($pseudolenght <= 255){
   if($mail == $mail2){ 
    if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
		 $sql1 = "SELECT * FROM membres WHERE mail = ?";	 
     $reqmail= $bdd->prepare($sql1);
     $reqmail->execute(array($mail));
     $mailexist = $reqmail->rowCount(); 
     if($mailexist == 0){
      if($mdp == $mdp2){
       try{
        $sql = "INSERT INTO membres  (pseudo, mail, motdepase) VALUES(?, ?, ?)";
        $params = array($pseudo, $mail, $mdp);
        $insertmbr = $bdd->prepare($sql);
        $insertmbr->execute($params);
      }catch(Exception $e) {
        echo "<br>ERREUR ! ".$e->getMessage()."<br>";
        echo "<br>params : <br>";
        print_r($params);
      }
      $erreur = "Votre compte a bien été créé !";
     } else{
       $erreur = "Les mots de passes ne correspondent pas !";
     }
    }
   } else {
     $erreur = "L'adresse mail entrée est déjà utilisée !";
    }
  }else {
     $erreur = "Les adresses e-mail ne correspondent pas !";
    }
 }else {
   $erreur = "Votre pseudo est trop long !";
  }
 }else{
  $erreur = "Tous les champs doivent être remplis !";
 }
}

?>

1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Je n'ai pas compris ce que je dois mettre ici:
// Reporte toutes les erreurs PHP (Voir l'historique des modifications)
Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
3 301 > Anonymous
Tu as juste à prendre tout le code que je t'ai donné ... et à remplacer le tient.
Après.. tu le testes ..et tu vois ce que ça donne.
Voilà le résultat:
http://bit.ly/1QK7lAG
J'ai enfin réussi je ne sais même pas comment j'ai refait la manipulation de ce tutoriel:
https://www.youtube.com/watch?v=s7qtAnH5YkY
Merci quand même jordane45 si je n'avais pas eu d'aide j'aurai sans doute laisser mon projet à l'abandon.
Merci !
Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
3 301
Les messages d'erreurs sont assez clair pour comprendre où est le souci...
Dans la requête... un champ de ta BDD n'a pas le bon nom ou n'existe pas.