Après avoir lu entièrement le tuto sur le site du zéro : "Comment créer un site web avec PHP et Mysql en PDO"
Je n'arrive pas à trouver le problème de ma requête (Requête qui provient de ce tuto).
J'ai une entrée dans ma BDD avec comme pseudo : admin et password : 181290.
Je me connecte avec mon formulaire et la requête me dit : Vos identifiants sont incorrects !
Alors que ce sont les bons...
Je précise que le formulaire est envoyé en ajax, et qu'il n'y a pas d'erreur de ce côté là, sinon je n'aurais pas de message d'erreur provenant de la requête.
<?php
require('../include/functions.inc.php');
$pseudo = $_POST['pseudo'];
$pass = sha1($_POST['pass']);
if (!empty($pseudo) && !empty($pass)) {
$req = $connect->prepare('SELECT id FROM wa_communaute WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array('pseudo' => $pseudo,'pass' => sha1($pass)));
$resultat = $req->fetch();
if (!$resultat) {
echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
}
else {
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
echo 'OK';
}
} else {
echo '<div class="error-login">Veuillez remplir tous les champs !</div>';
}
?>
Ben ça dépend de commnet tu les insère dans ta base de donnée!!! Je pense qu'un seul est suffistant; selon moi tu pourrais supprimer celui dans la requête.
De plus, je te conseille après la requête :
while ($resultat = $req->fetch())
{
if ($resultat['pseudo'] == $pseudo AND $resultat['pass'] == $pass)
{
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
echo 'OK';
}
else
{
echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
}
}
Pourquoi une boucle ? Pourquoi recomparer les login/password après alors que c'est fait via la requête ? Tu as plusieurs utilisateurs avec le même login ? Il était bien mieux son code !
--
Tu supprimes celui [sha1] que tu veux, mais je te conseillerais d'éviter les variables intermédiaires déjà, en l'état, ça n'apporte rien et ça pourrait même te valoir des E_NOTICE.
Voila mon nouveau code avec t'a requête que tu m'a donné :
Mais ça ne fonctionne toujours pas
Je donne aussi mon formulaire de connexion + mon script ajax qui traite le formulaire (Normalement il ne devrait pas y avoir de problème dans le js) + le fichier de configuration pour se connecter à la base :
require('config.inc.php');
$pseudo = $_POST['pseudo'];
$pass = $_POST['pass'];
if (!empty($pseudo) && !empty($pass)) {
$req = $connect->prepare('SELECT id FROM wa_communaute WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array('pseudo' => $_POST['pseudo'],'pass' => sha1($_POST['pass'])));
$resultat = $req->fetch();
if (!$resultat) {
echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
}
else {
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
echo 'OK';
}
} else {
echo '<div class="error-login">Veuillez remplir tous les champs !</div>';
}
$PARAM_serveur = '*************';
$PARAM_bdd = '*************';
$PARAM_login = '*************';
$PARAM_mdp = '*************';
$connect = new PDO('mysql:host='.$PARAM_serveur.';dbname='.$PARAM_bdd, $PARAM_login, $PARAM_mdp);
$connect->exec("SET CHARACTER SET utf8");
Oui le mot de passe est crypté dans ma base en sha1
Formulaire de connexion PDO
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli