Problème communication base de donnée et php
Résolu
Yougo120
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
Yougo120 Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Yougo120 Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Mon problème est le suivant, je m'inscris sur la page register.php qui envoie mon mail et mdp sur ma base de donnée appelée "dropshipping" dans la table "membres" puis dans connexion.php, lorsque je rentre les
BON IDENTIFIANTS (ceux sur la base de donné), le site me dit que les identifiants sont incorrects.
register.php :
connexion.php :
EDIT : Correction des balises de code
Merci d'avance :)
Mon problème est le suivant, je m'inscris sur la page register.php qui envoie mon mail et mdp sur ma base de donnée appelée "dropshipping" dans la table "membres" puis dans connexion.php, lorsque je rentre les
BON IDENTIFIANTS (ceux sur la base de donné), le site me dit que les identifiants sont incorrects.
register.php :
<?php $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','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 = $db->prepare("SELECT * FROM membres WHERE mail = ?"); $reqmail->execute(array($mail)); $mailexist = $reqmail->rowCount(); if($mailexist == 0) { if($mdp == $mdp2) { $motdepasse = $_POST['mdp']; $insert = $db->prepare("INSERT INTO membres VALUES('0','$pseudo','$mail','$motdepasse')"); $insert->execute(); $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 !"; } } ?> <html> <head> <title>Inscription</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>
connexion.php :
<?php session_start(); $db = new PDO('mysql:host=localhost;dbname=dropshipping', 'root','root'); if(isset($_POST['formconnexion'])) { $mailconnect = htmlspecialchars($_POST['mailconnect']); $mdpconnect = sha1($_POST['mdpconnect']); if(!empty($mailconnect) AND !empty($mdpconnect)) { $requser = $db->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?"); $requser->execute(array($mailconnect, $mdpconnect)); $userexist = $requser->rowCount(); if($userexist == 1) { $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['pseudo'] = $userinfo['pseudo']; $_SESSION['mail'] = $userinfo['mail']; header("Location: profil.php?id=".$_SESSION['id']); } else { $erreur = "Mauvais mail ou mot de passe !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?> <html> <head> <title>Connexion</title> <meta charset="utf-8"> </head> <body> <div align="center"> <h2>Connexion</h2> <br /><br /> <form method="POST" action=""> <input type="email" name="mailconnect" placeholder="Mail" /> <input type="password" name="mdpconnect" placeholder="Mot de passe" /> <br /><br /> <input type="submit" name="formconnexion" value="Se connecter !" /> </form> <h3>Pas encore de compte ? <a href="register.php">Inscrivez-vous !</a></h3> <?php if(isset($erreur)) { echo '<font color="red">'.$erreur."</font>"; } ?> </div> </body> </html>
EDIT : Correction des balises de code
Merci d'avance :)
A voir également:
- Problème communication base de donnée et php
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Easy php - Télécharger - Divers Web & Internet
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
- Formules excel de base - Guide
1 réponse
Bonjour,
Pleins d'erreurs dans ton code.....
par exemple :
- htmlspecialchars ne s'utilise QUE pour l'affichage. En aucun cas pour l'enregistrement en bdd
- sha1 n'est plus à utiliser. Désormais on utilise les fonctions php
http://php.net/manual/fr/function.password-hash.php pour coder le password
https://www.php.net/manual/fr/function.password-verify.php pour le vérifier
- rowCount ne s'utilise pas avec une requête SELECT. A la place on fera un COUNT
Vu que tu fais du PDO il faut y gérer les éventuelles erreurs :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
De plus, pour que ton code soit plus propre, applique ce qui est indiqué ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Voici un exemple de code, je t'invite à t'en inspirer :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
Pour finir... lorsque tu postes ton code sur le forum, pense à y préciser le langage.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Pleins d'erreurs dans ton code.....
par exemple :
- htmlspecialchars ne s'utilise QUE pour l'affichage. En aucun cas pour l'enregistrement en bdd
- sha1 n'est plus à utiliser. Désormais on utilise les fonctions php
http://php.net/manual/fr/function.password-hash.php pour coder le password
https://www.php.net/manual/fr/function.password-verify.php pour le vérifier
- rowCount ne s'utilise pas avec une requête SELECT. A la place on fera un COUNT
Vu que tu fais du PDO il faut y gérer les éventuelles erreurs :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
De plus, pour que ton code soit plus propre, applique ce qui est indiqué ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Voici un exemple de code, je t'invite à t'en inspirer :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
Pour finir... lorsque tu postes ton code sur le forum, pense à y préciser le langage.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
1 584
bonjour, de plus de l'avalanche d'erreurs et de maladresses dont une partie a été signalée par jordane45, il me semble que tu enregistres le mot de passe en clair dans la base (hérésie), et ensuite tu le compares au mot de passe hashé: penses-tu vraiment que cela pourrait fonctionner?
Yougo120
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup à vous deux, ça marche désormais !