[PHP] [WEB] Problème base de données
Résolu
Anonymous
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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):
Désolé c'est pas très compréhensible mais bon...
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...
A voir également:
- [PHP] [WEB] Problème base de données
- Fuite données maif - Guide
- Web office - Guide
- Navigateur web - Guide
- Base de registre - Guide
- Creation de site web - Guide
4 réponses
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 :
Cordialement,
Jordane
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
Anonymous
Bonjour jordane45 où dois-je mettre ce code ?
A la place de celui contenu dans ton IF
A transformer en :
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éé !"; }
C'est en effet peut être un souci de connexion.
Essayes ça :
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 !"; } } ?>