Besoin d'aide je narrive pas redirer vers ma page de connexion....
Résolu/Fermé
A voir également:
- Besoin d'aide je narrive pas redirer vers ma page de connexion....
- Gmail connexion - Guide
- Supprimer une page word - Guide
- Hotmail connexion - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Word numéro de page 1/2 - Guide
16 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
9 mai 2020 à 09:12
9 mai 2020 à 09:12
Si tu laisses un die .. la redirection qui se trouve après ne se fera jamais..
ok merci jordan vous avez raison jai enlever le die et kan jexecute il me redirige efrectivement vers ma page de connexion.. maintenant kan je me connect il me met cette erreur la:!!
Erreur fatale : exception PDO non capturée: SQLSTATE [HY093]: numéro de paramètre non valide: le nombre de variables liées ne correspond pas au nombre de jetons dans C: \ xampp \ (Array) # 1 a la ligne 18
la ligne 18 correspond a $req->execute(['pseudo' =>$pseudo]);
Erreur fatale : exception PDO non capturée: SQLSTATE [HY093]: numéro de paramètre non valide: le nombre de variables liées ne correspond pas au nombre de jetons dans C: \ xampp \ (Array) # 1 a la ligne 18
la ligne 18 correspond a $req->execute(['pseudo' =>$pseudo]);
// recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : NULL; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : NULL; $req = $bdd->prepare('SELECT * FROM tblusers WHERE (pseudo = :psdoconnect OR email = :psdoconnect)'); $req->execute(['pseudo' => $pseudo]); $user = $req->fetch(); if($user == null){ $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; } elseif(password_verify($mdp, $user->password)){ $_SESSION['auth'] = $user; $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté'; header('Location: boutique.php'); exit(); } else { $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
9 mai 2020 à 10:44
9 mai 2020 à 10:44
Compare le "nom" de tes variables dans ta requête ( les fameux jetons) et ceux (ou celui devrais je dire) que tu envois dans ton execute... La réponse devrait te sauter aux yeux.
jai trouvé mon erreur merci jordan mais il me met encore une autrte erreur ci dessous
Notice: Trying to get property 'Password' of non-object
la ligne concernée cest celle ci:
Notice: Trying to get property 'Password' of non-object
la ligne concernée cest celle ci:
elseif(password_verify($mdp, $user->Password))
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
9 mai 2020 à 11:56
9 mai 2020 à 11:56
Déjà, sachant que je t'avais fourni la class USER .. et que cette class contenait, de mémoire, une méhtode permettant de faire l'authentification... je voudrais comprendre pourquoi tu réécris du code .....
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
9 mai 2020 à 12:18
9 mai 2020 à 12:18
Effectivement .. je ne sais pas comment l'utiliser avec l page d'inscription.. DC je l'ai juste inclu en début du code ci dessus...
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
caro
9 mai 2020 à 12:44
9 mai 2020 à 12:44
Redonne nous son contenu
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
9 mai 2020 à 13:04
9 mai 2020 à 13:04
Ok
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
9 mai 2020 à 13:05
9 mai 2020 à 13:05
voici le contenu de la class user
<?php class user { private $bdd = null; function __construct($bdd) { $this->bdd = $bdd; } public function dbExec($sql, $datas = NULL) { //Execution de la requete try { $requete = $this->bdd->prepare($sql); $requete->execute($datas); } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } return $requete; } public function getUserBypseudo($pseudo) { $sql = 'SELECT id FROM tblusers WHERE pseudo = ?'; $datas = array($pseudo); $res = $this->dbExec($sql,$datas); return $res->fetchAll(); } public function getUserByemail($email) { $sql = 'SELECT id FROM tblusers WHERE Email = ?'; $datas = array($email); $res = $this->dbExec($sql,$datas); return $res->fetchAll(); } public function addUser($pseudo,$mdp,$prenom,$nom,$email,$contact,$photo){ //cryptage du mot de passe $mdp = password_hash($mdp, PASSWORD_BCRYPT); //insertion en BDD $sql = "INSERT INTO tblusers (pseudo, Password, Firstname, Lastname, Email, contact, avatar) values (?,?,?,?,?,?,?) "; $datas = array($pseudo,$mdp,$prenom,$nom,$email,$contact,$photo); $res = $this->dbExec($sql,$datas); return $res; } /** * Fonction permettant de vérifier si l'utilisateur existe en fonction de son login et password */ public function authentification($pseudo,$mdp){ $user = $this->getUserByPseudo($pseudo); //verifie qu'il n'y a bien qu'un seul user avec ce pseudo.. if(!empty($user) && count($user)==1){ $mdpBdd = $user[0]['password']; if (password_verify($mdp, $mdpBdd)){ return $user; }else{ return false; } } } } ?>
effectivement jai toujour la classe user jai vu la partie authentification mais je ne savait pas comment lutiliser avec la partie connexion je me suis dit quil avait besoin du code ci dessus...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
9 mai 2020 à 14:18
9 mai 2020 à 14:18
<?php class user { private $bdd = null; function __construct($bdd) { $this->bdd = $bdd; } public function dbExec($sql, $datas = NULL) { //Execution de la requete try { $requete = $this->bdd->prepare($sql); $requete->execute($datas); } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } return $requete; } public function getUserBypseudo($pseudo) { $sql = 'SELECT * FROM tblusers WHERE pseudo = ?'; $datas = array($pseudo); $res = $this->dbExec($sql,$datas); return $res->fetchAll(); } public function getUserByemail($email) { $sql = 'SELECT * FROM tblusers WHERE Email = ?'; $datas = array($email); $res = $this->dbExec($sql,$datas); return $res->fetchAll(); } public function addUser($pseudo,$mdp,$prenom,$nom,$email,$contact,$photo){ //cryptage du mot de passe $mdp = password_hash($mdp, PASSWORD_BCRYPT); //insertion en BDD $sql = "INSERT INTO tblusers (pseudo, Password, Firstname, Lastname, Email, contact, avatar) values (?,?,?,?,?,?,?) "; $datas = array($pseudo,$mdp,$prenom,$nom,$email,$contact,$photo); $res = $this->dbExec($sql,$datas); return $res; } /** * Fonction permettant de vérifier si l'utilisateur existe en fonction de son login et password */ public function authentification($pseudo,$mdp){ $user = $this->getUserByPseudo($pseudo); //verifie qu'il n'y a bien qu'un seul user avec ce pseudo.. if(!empty($user) && count($user)==1){ $mdpBdd = $user[0]['password']; if (password_verify($mdp, $mdpBdd)){ return $user; }else{ return false; } }else{ return null; } } } ?>
NB: J'ai changé les fonctions getUserBypseudo et getUserByemail pour qu'elles retournent toutes les infos du user et pas seulement son id
Il me semble que c'est ce que je t'avais donné... et si tel est le cas, je ne vois pas pourquoi tu les avais modifié...
J'ai un peu modifié également la fonction d'authentification.
Et pour ton code, (bien entendu tu as chargé la class user )
et donc.. ça donne :
<?php // recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : NULL; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : NULL; $userAuth = $oUser->authentification($pseudo,$mdp); if($userAuth){ $_SESSION['auth'] = $userAuth; $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté'; header('Location: boutique.php'); exit(); } elseif($userAuth === false ) { $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; }else{ $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; }
cc jordan merci bien... jai executé et on me met erreur: Undefined variable: oUser in C:\xampp\htdocs\Mb_Projet\mon blog\membres\connexion.php on line 17
Fatal error: Uncaught Error: Call to a member function authentification() on null a la ligne 8 du code ci dessus :
Fatal error: Uncaught Error: Call to a member function authentification() on null a la ligne 8 du code ci dessus :
$userAuth = $oUser->authentification($pseudo,$mdp);
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
9 mai 2020 à 17:52
9 mai 2020 à 17:52
Tu dois remplacer oUser par la variable qui a été utilisé pour l'instantation de la classe user.
comme tu ne nous as pas montré le début de ton code impossible de savoir ce que tu as utilisé...
comme tu ne nous as pas montré le début de ton code impossible de savoir ce que tu as utilisé...
ah mince ...ok excuse moi jordan javais oublier dinstancier la class ... je lai fait il nya plus derreur mais au lieu de me rediriger vers mon site il maffiche une page vierge jai pourtant bien le header location .. jai essayer avec et sans la session flash ca ne passe pas.
<?php //connexion à la bdd require_once 'connect_bd.php'; // on inclu la class user require_once "user.class.php"; //initialisation des variables $errors = array(); //on instancie la class user $oUser = new user($bdd); // recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : NULL; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : NULL; $userAuth = $oUser->authentification($pseudo, $mdp); if($userAuth){ $_SESSION['auth'] = $userAuth; header('Location: boutique.php'); exit(); } elseif($userAuth === false ) { $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; } else{ $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; } ?>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
9 mai 2020 à 20:48
9 mai 2020 à 20:48
Il te manque le démarrage des sessions non ?
Et as tu activé l'affichage des erreurs PHP ?
Après, peux tu faire des tests en plaçant (juste le temps des tests...) quelques echo dans le code (et en retirant une partie du code )
Par exemple
Si le echo s'affiche, tu peux ensuite tester
Et as tu activé l'affichage des erreurs PHP ?
Après, peux tu faire des tests en plaçant (juste le temps des tests...) quelques echo dans le code (et en retirant une partie du code )
Par exemple
<?php <?php session_start(); // si tu ne l'as pas déjà mis.. //connexion à la bdd require_once 'connect_bd.php'; // on inclu la class user require_once "user.class.php"; //initialisation des variables $errors = array(); //on instancie la class user $oUser = new user($bdd); // recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : NULL; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : NULL; echo " On arrive bien là";
Si le echo s'affiche, tu peux ensuite tester
<?php session_start(); // si tu ne l'as pas déjà mis.. //connexion à la bdd require_once 'connect_bd.php'; // on inclu la class user require_once "user.class.php"; //initialisation des variables $errors = array(); //on instancie la class user $oUser = new user($bdd); // recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : NULL; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : NULL; $userAuth = $oUser->authentification($pseudo, $mdp); print_r( $userAut);
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 15:24
10 mai 2020 à 15:24
bonjour jordan.. jai tester le echo il saffiche .. jai executer le print_r et ca maffiche une page
blanche vierge .. cest normal ? sinon quesqui devrait safficher en executant le print_r
blanche vierge .. cest normal ? sinon quesqui devrait safficher en executant le print_r
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
10 mai 2020 à 15:41
10 mai 2020 à 15:41
Le champ "Password" dans ta bdd est bien écrit avec un "P" majuscule ?
Dans ce cas, modifie la class user :
Dans ce cas, modifie la class user :
public function authentification($pseudo,$mdp){ $user = $this->getUserByPseudo($pseudo); //verifie qu'il n'y a bien qu'un seul user avec ce pseudo.. if(!empty($user) && count($user)==1){ $mdpBdd = $user[0]['Password']; // Password au lieu de password if (password_verify($mdp, $mdpBdd)){ return $user; }else{ return false; } }else{ return null; } }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
caro
10 mai 2020 à 17:02
10 mai 2020 à 17:02
Tu peux me faire un dump de ta bdd ?
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 17:19
10 mai 2020 à 17:19
de texporter ma bd?
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 17:32
10 mai 2020 à 17:32
comment je fais jordan? comment je texporte ma bd
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
caro
10 mai 2020 à 17:52
10 mai 2020 à 17:52
Depuis ton phpmyadmin tu génères un export au format sql de ta base de données
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
10 mai 2020 à 20:12
10 mai 2020 à 20:12
Donc...
Le code est bon.
Il faut juste lui dire quoi faire lorsque l'identifiant n'est pas bon...
par exemple...
Sinon.. normal que rien ne s'affiche.
Ensuite..
Ton user
n'est pas bon.. le Password n'est pas hashé ... Donc si c'est lui que tu utilises pour vérifier.. normal que ça ne marche pas.
Et enfin..
La structure de ta table n'est pas bonne non plus.
Le champ pour stocker le Password n'est pas assez grand.
Modifie la structure de ta table par :
Il te faudra supprimer puis recréer tes users si tu veux que les infos soient correctement enregistrées.
Par exemple, moi je me suis créer un user de test
Le code est bon.
Il faut juste lui dire quoi faire lorsque l'identifiant n'est pas bon...
par exemple...
header('Location: login.php');
Sinon.. normal que rien ne s'affiche.
if($userAuth){ $_SESSION['auth'] = $userAuth; header('Location: boutique.php'); exit(); } elseif($userAuth === false ) { $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; echo 'Identifiant ou mot de passe incorrecte'; header('Location: login.php'); exit(); } else{ $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; header('Location: login.php'); exit(); }
Ensuite..
Ton user
(4, 'Fatim', 'Fatima', 'marie pascale', 'Kouassi', '***@***', 0, ''),
n'est pas bon.. le Password n'est pas hashé ... Donc si c'est lui que tu utilises pour vérifier.. normal que ça ne marche pas.
Et enfin..
La structure de ta table n'est pas bonne non plus.
Le champ pour stocker le Password n'est pas assez grand.
Modifie la structure de ta table par :
CREATE TABLE IF NOT EXISTS `tblusers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pseudo` varchar(20) CHARACTER SET utf8 NOT NULL, `Password` varchar(256) CHARACTER SET utf8 NOT NULL, `Firstname` text CHARACTER SET utf8 NOT NULL, `Lastname` text CHARACTER SET utf8 NOT NULL, `Email` varchar(60) CHARACTER SET utf8 NOT NULL, `contact` int(15) NOT NULL, `avatar` varchar(256) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`), KEY `pseudo` (`pseudo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Il te faudra supprimer puis recréer tes users si tu veux que les infos soient correctement enregistrées.
Par exemple, moi je me suis créer un user de test
<?php require_once 'connect_bd.php'; // on inclu la class user require_once "user.class.php"; // on inclu la class user $oUser = new user($bdd); $oUser->addUser('jojo','azerty','jordane','re','jojo@test.fr',1,'moi.jpeg');
Ok je le fait mais .. la ligne Fatima la c'était un essaie sans cryptage du mot je l'avais fait avant dinserer le code du cryptage j'ai juste pas voulu supprimer.. sinon c'est avec les autre usées que je fais le test de connexion... Ok je change la structure de ma base et je reessai
Mais j'ai fait le var_dump a la place du print_r et là ça m'a afficher NULL
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
10 mai 2020 à 20:47
10 mai 2020 à 20:47
Le null, si tu regardes le code de la fonction authentification .. correspond au fait qu'il ne trouve pas l'utilisateur...
Donc, soit tu écrits mal le pseudo de l'utilisateur ... soit tes variables ne sont pas bien envoyées par ton formulaire.
Fais donc un print_r($_POST); pour voir ce que contient ton submit ...
Donc, soit tu écrits mal le pseudo de l'utilisateur ... soit tes variables ne sont pas bien envoyées par ton formulaire.
Fais donc un print_r($_POST); pour voir ce que contient ton submit ...
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 20:54
10 mai 2020 à 20:54
Ok je fait le print_r
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 20:58
10 mai 2020 à 20:58
J'ai fait le print_r ça m'affiche ça: array() c'est tt ça veux dire kil ne récupère pas les donnée du formulaire ?
jai fait une nvelle inscription et jai executer le print_r($_POST) kan je clik sur valider voila ce qui saffiche
Array ( [psdoconnect] => affia [passconnect] => aff [submit] => se connecter )
Array ( [psdoconnect] => affia [passconnect] => aff [submit] => se connecter )
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
10 mai 2020 à 21:24
10 mai 2020 à 21:24
Ce n'est pas à l'inscription.. mais au login ....
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 21:27
10 mai 2020 à 21:27
Sisi c'est du login que je parle
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
caro
10 mai 2020 à 21:33
10 mai 2020 à 21:33
Donc.. Ton $_POST contient bien le pseudo et le password... ça devrait donc être bon.
Que se passe t'il ?
Tu pourrais nous remontrer ton code complet ?
Que se passe t'il ?
Tu pourrais nous remontrer ton code complet ?
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 21:41
10 mai 2020 à 21:41
ok
Romson8
Messages postés
4
Date d'inscription
lundi 16 mars 2020
Statut
Membre
Dernière intervention
10 mai 2020
10 mai 2020 à 21:30
10 mai 2020 à 21:30
//après avoir écrit la requête pour la connexion header('location: lapage.php');
<?php session_start(); //connexion à la bdd // penser à activer l'affichage des erreurs PDO : require_once 'connect_bd.php'; // on inclu la class user require_once "user.class.php"; // on inclu la class user //initialisation des variables $errors = array(); //on instancie la class user $oUser = new user($bdd); // recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : NULL; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : NULL; print_r($_POST) $userAuth = $oUser->authentification($pseudo, $mdp); if($userAuth){ $_SESSION['auth'] = $userAuth; header('Location: boutique.php'); exit(); } elseif($userAuth === false ) { $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; echo 'Identifiant ou mot de passe incorrecte'; header('Location: login.php'); exit(); } else{ $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; header('Location: login.php'); exit(); } ?>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
10 mai 2020 à 22:05
10 mai 2020 à 22:05
Et Donc... ?
Que se passe t'il ?
As tu, comme je te l'ai demandé à plusieurs reprises, activé l'affichage des erreurs php ?
Sachant que les redirections ne peuvent pas marcher si tu as déjà des choses d'afficher ( le print_r et le echo..).
On va y aller par étape :
Que donne ce code :
Que se passe t'il ?
As tu, comme je te l'ai demandé à plusieurs reprises, activé l'affichage des erreurs php ?
Sachant que les redirections ne peuvent pas marcher si tu as déjà des choses d'afficher ( le print_r et le echo..).
On va y aller par étape :
Que donne ce code :
<?php session_start(); //Affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once 'connect_bd.php'; // on inclu la class user require_once "user.class.php"; // on inclu la class user //initialisation des variables $errors = array(); //on instancie la class user $oUser = new user($bdd); // recuperation PROPRE des variables AVANT de les utiliser $pseudo = !empty($_POST['psdoconnect']) ? $_POST['psdoconnect'] : 'jojo'; $mdp = !empty($_POST['passconnect']) ? $_POST['passconnect'] : 'azerty'; $userAuth = $oUser->authentification($pseudo, $mdp); echo "<br>Pseudo:" . $pseudo ; echo "<br>Password :". $mdp ; echo "<pre>"; var_dump($userAuth); echo "</pre>"; if($userAuth){ $_SESSION['auth'] = $userAuth; echo '<br>Connexion OK'; //header('Location: boutique.php'); exit(); } elseif($userAuth === false ) { $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; echo '<br>Identifiant ou mot de passe incorrecte'; //header('Location: login.php'); exit(); } else{ $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrecte'; echo '<br>Identifiant ou mot de passe incorrecte'; //header('Location: login.php'); exit(); }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 22:06
10 mai 2020 à 22:06
Et on est bien d'accord que tu as modifié la structure de ta table et que tu avais bien pris ma correction du fichier user.class.php ?
Je te le remet au cas où
Je te le remet au cas où
<?php class user { private $bdd = null; function __construct($bdd) { $this->bdd = $bdd; } public function dbExec($sql, $datas = NULL) { //Execution de la requete try { $requete = $this->bdd->prepare($sql); $requete->execute($datas); } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } return $requete; } public function getUserBypseudo($pseudo) { $sql = 'SELECT * FROM tblusers WHERE pseudo = ?'; $datas = array($pseudo); $res = $this->dbExec($sql,$datas); return $res->fetchAll(); } public function getUserByemail($email) { $sql = 'SELECT * FROM tblusers WHERE Email = ?'; $datas = array($email); $res = $this->dbExec($sql,$datas); return $res->fetchAll(); } public function addUser($pseudo,$mdp,$prenom,$nom,$email,$contact=0,$photo=''){ //cryptage du mot de passe $mdp = password_hash($mdp, PASSWORD_BCRYPT); //insertion en BDD $sql = "INSERT INTO tblusers (pseudo, Password, Firstname, Lastname, Email, contact, avatar) values (?,?,?,?,?,?,?) "; $datas = array($pseudo,$mdp,$prenom,$nom,$email,$contact,$photo); $res = $this->dbExec($sql,$datas); return $res; } /** * Fonction permettant de vérifier si l'utilisateur existe en fonction de son login et password */ public function authentification($pseudo,$mdp){ $user = $this->getUserByPseudo($pseudo); //verifie qu'il n'y a bien qu'un seul user avec ce pseudo.. if(!empty($user) && count($user)==1){ $mdpBdd = $user[0]['Password']; if (password_verify($mdp, $mdpBdd)){ return $user; }else{ return false; } }else{ return null; } } } ?>
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 22:25
10 mai 2020 à 22:25
oui jai modifier la structure de la table... voila ce que donne le code avec les ini_set:
Pseudo:jojo
Password :azerty
NULL
Identifiant ou mot de passe incorrecte
Pseudo:jojo
Password :azerty
NULL
Identifiant ou mot de passe incorrecte
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
caro
Modifié le 10 mai 2020 à 22:27
Modifié le 10 mai 2020 à 22:27
Dis voir... tu passes bien par ton formulaire de connexion ???
Car là, ça indique que ta variable POST est vide ....
Quel est le code html de ta page de login ??
Car là, ça indique que ta variable POST est vide ....
Quel est le code html de ta page de login ??
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 22:32
10 mai 2020 à 22:32
voici le code html de ma page de connexion
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <link href="logn.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Play" rel="stylesheet"> </head> <body> <div class="signin"> <form action="connexion.php" method="post"> <h2 style="color:#fff;">Se connecter</h2> <input type="text" name="psdoconnect" placeholder="pseudo" required><br><br> <input type="password" name="passconnect" placeholder="Password" required /><br /><br /> <input type="submit" value="se connecter" name="submit" /><br /><br /> <div id="container"> </form> </div> </body> </html>
il me redirige vers mon site maintenant comment je fais pour recuperer le nom de celui qui vient de se connecter et lafficher dans le menu de naviguation?
avec le header en commentaire voila ce quil maffiche:
Pseudo:affia
Password :aff
array(1) {
[0]=>
array(8) {
["id"]=>
string(1) "1"
["pseudo"]=>
string(5) "affia"
["Password"]=>
string(60) "$2y$10$3XwTVEsrVdRBpuGRgZmjEuSBdoGDnNXrriFZQsGy3X1g258oZ9Bg6"
["Firstname"]=>
string(5) "herve"
["Lastname"]=>
string(2) "Sy"
["Email"]=>
string(17) "***@***"
["contact"]=>
string(8) "56318852"
["avatar"]=>
string(17) "1547479743728.jpg"
}
}
Connexion OK
quand (//header('Location: boutique.php');) nest pas en commentaire il me redirige sur boutique.php
Pseudo:affia
Password :aff
array(1) {
[0]=>
array(8) {
["id"]=>
string(1) "1"
["pseudo"]=>
string(5) "affia"
["Password"]=>
string(60) "$2y$10$3XwTVEsrVdRBpuGRgZmjEuSBdoGDnNXrriFZQsGy3X1g258oZ9Bg6"
["Firstname"]=>
string(5) "herve"
["Lastname"]=>
string(2) "Sy"
["Email"]=>
string(17) "***@***"
["contact"]=>
string(8) "56318852"
["avatar"]=>
string(17) "1547479743728.jpg"
}
}
Connexion OK
quand (//header('Location: boutique.php');) nest pas en commentaire il me redirige sur boutique.php
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
10 mai 2020 à 22:51
10 mai 2020 à 22:51
Donc c'est bon.
Tu retires les echo/var_dump
tu réactives la redirection
et tout sera bon.
Et pour récupérer les infos de l'utilisateur connecté... il suffit de récupérer le contenu de la variable
mais là.. c'est une autre question.
Pense à mettre ce sujet en résolu et ouvre en un autre si tu as de nouveaux soucis.
Tu retires les echo/var_dump
tu réactives la redirection
et tout sera bon.
Et pour récupérer les infos de l'utilisateur connecté... il suffit de récupérer le contenu de la variable
$_SESSION['auth']
mais là.. c'est une autre question.
Pense à mettre ce sujet en résolu et ouvre en un autre si tu as de nouveaux soucis.
caro
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
10 mai 2020 à 22:57
10 mai 2020 à 22:57
ok merci bien jordan...