Bonjour,
Je souhaiterai mettre mon formulaire de connexion en requète préparé. Je m'en doutais j'ai une erreur "Warning" pouvez-vous me dire où il y a une erreur s'ils vous plait.
Sinon mon formulaire sans PDO fonctionne mais voilà je voudrais essayer de comprendre le fonctionnement. L'erreur se trouve sur la ligne execute.
Je vous remercie beaucoup de votre aide.
Cordialement
//on sélectionne la table identifiant et on teste le champ login
$resultats = $bdd->prepare('SELECT t_gestion_adherent.id_adherent, t_gestion_adherent.nom, t_gestion_adherent.prenom, t_gestion_adherent.adresse_mail, t_identifiant.rid_adherent, t_identifiant.categorie_statut, t_identifiant.niveau_statut, t_identifiant.categorie_admin, t_identifiant.login
FROM t_gestion_adherent
LEFT JOIN t_identifiant
ON t_gestion_adherent.id_adherent = t_identifiant.rid_adherent
WHERE login=:login AND pass=:pass');
//on execute la requète
$resultats->execute();
// on récupére les données dans un tableau
$donnees = $resultats->fetch(PDO::FETCH_ASSOC);
Bien sûr que $donnees['pass'] est indéfini.
D'où viendrait-il ?
$donnees, c'est une ligne de réponse à ta requête SELECT, mais dans ton SELECT tu ne demandes aucun 'pass'
D'ailleurs, je me demande ce que tu cherches à vérifier avec ton test, il y a déjà un "AND pass=:pass" dans le WHERE de ton SELECT, tu es sûr de n'avoir que des enregistrements avec le bon mot de passe.
C'est génial je te remercie de ton aide, j'ai rajouté le pass dans le select et la fameuse ligne execute et oupiiiiiiii ça marche.
Tu as été très réactif c'est super.
Je met mon code en entier à des fois pour quelqu'un qui veux vérifier un formulaire d'identification.
Merci
<?php
//on teste si le visiteur a soumis le formulaire
if (!empty($_POST)) {
//on vérifie si le login et password ne sont pas vide, nulle ou non définie
if (!empty($_POST['login']) && (!empty($_POST['pass']))) {
//on récupère les valeurs des champs
$login = trim($_POST['login']); //supprime les espaces en début et fin de chaine
$login = htmlspecialchars($login, ENT_QUOTES); // supprime les caracteres speciaux html dans la chaine
$login = stripslashes($login); // Supprime les antislashs d'une chaîne.
$pass = trim($_POST['pass']);
$pass = htmlspecialchars($pass, ENT_QUOTES);
$pass = stripslashes($pass);
//cryptage sha1 du mot de pass
//$pass = sha1($pass);
//on sélectionne la table identifiant et on teste le champ login
$resultats = $bdd->prepare('SELECT t_gestion_adherent.id_adherent, t_gestion_adherent.nom, t_gestion_adherent.prenom, t_gestion_adherent.adresse_mail, t_identifiant.rid_adherent, t_identifiant.categorie_statut, t_identifiant.niveau_statut, t_identifiant.categorie_admin, t_identifiant.login, t_identifiant.pass
FROM t_gestion_adherent
LEFT JOIN t_identifiant
ON t_gestion_adherent.id_adherent = t_identifiant.rid_adherent
WHERE login=:login AND pass=:pass');
//on execute la requète
$resultats->execute(array(':login'=>$login,':pass'=>$pass));
// on récupére les données dans un tableau
$donnees = $resultats->fetch(PDO::FETCH_ASSOC);
//si le password est différent on met un message d'erreur
if ($donnees['pass'] != $pass) {
echo "<span class='erreur'>Mauvais mot de passe...ou Mauvais login...Merci de recommencer.</span>";
}
//sinon c'est bon
else {
//on cré des variables accessibles depuis toutes les pages
$_SESSION['id_adherent'] = $donnees['id_adherent'];
$_SESSION['nom'] = $donnees['nom'];
$_SESSION['prenom'] = $donnees['prenom'];
$_SESSION['adresse_mail'] = $donnees['adresse_mail'];
$_SESSION['categorie_statut'] = $donnees['categorie_statut'];
$_SESSION['niveau_statut'] = $donnees['niveau_statut'];
$_SESSION['categorie_admin'] = $donnees['categorie_admin'];
$_SESSION['login'] = $donnees['login'];
// Utiliser la redirection ---------------
redir("index.php?body=compte&type=compte");
}
} else {
echo "<span class='erreur'>Veuillez remplir tous les champs !!!</span>";
}
}
?>