Authentifier une personne
Résolu/Fermé
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
-
Modifié le 3 déc. 2017 à 17:58
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 9 déc. 2017 à 10:14
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 9 déc. 2017 à 10:14
A voir également:
- Pour authentifier votre achat sur le site veuillez saisir le code 38669
- Site de telechargement - Accueil - Outils
- Le code ascii - Guide
- Rech. ou saisir l'url - Guide
- Site pour vendre des objets d'occasion - Guide
- Site comme coco - Accueil - Réseaux sociaux
5 réponses
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
Ambassadeur
1 557
3 déc. 2017 à 18:02
3 déc. 2017 à 18:02
bonsoir, lecture suggérée:
TP : créer un espace membres
TP : créer un espace membres
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
Modifié le 4 déc. 2017 à 09:50
Modifié le 4 déc. 2017 à 09:50
Bonjour j'ai traité le TP : créer un espace membres: de openclassrooms je me suis en sortir avec la page d'inscription . mais avec ma page de connexion il n'arrive pas a reconnaitre le pseudo et le mot de passe qui est déjà dans la base de données voici le code de la connexion
MERCI D'AVENCE
<?php //connexion à la base de donnees try{ $bdd = new PDO('mysql:host=localhost;dbname=membres_du_site', 'root', ''); }catch(PDOExeption $e){ die ('Erreur : ' .$e->getMessage()); } if( isset($_POST['formconnexion']) AND !empty($_POST['formconnexion'])){ $pseudo = htmlspecialchars(($_POST['pseudo'])); $pass = ($_POST['pass']); if(!empty($pseudo) AND !empty($pass)){ // Hachage du mot de passe $pass_hache = password_hash($_POST['pass'], PASSWORD_DEFAULT); //Vérification des identifiants $req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array( 'pseudo' => $pseudo, 'pass' => $pass_hache)); $result = $req->fetch(); if(!$result){ $msgC = 'Mouvais identifiant ou mot de passe !'; } else { session_start(); $_SESSION['id'] = $result['id']; $_SESSION['pseudo'] = $pseudo; $msgC = "Vous êtes connecté !"; } } else { $msgC = 'Tous champs les doivent être remplir !'; } } ?> <link href="main.css" rel="stylesheet" /> <meta charset="utf-8"> <h3>Se connecter</h3> <br /><br /> <form method="POST" action=""> <input type="pseudo" name="pseudo" placeholder="Mail" /> <input type="password" name="pass" placeholder="Mot de passe" /> <input type="submit" name="formconnexion" value="se connecter"/> </form> <?php if(isset($msgC)) {echo '<font color="darkred">' .$msgC. '</font>';} ?>
MERCI D'AVENCE
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
4 déc. 2017 à 10:59
4 déc. 2017 à 10:59
Bonjour,
Commence par appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, htmlspecialchars n'est à utiliser que pour l'affichage... en aucun cas pour faire une requête
Et après, il est préférable de placer l'instruction session_start(); au début de ton code php pas en plein milieu.
Et pour finir, je t'invite à appliquer ce qui est ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
NB : !empty vérifie déjà le isset ... pas besoin de mettre les deux !
Tiens nous au courant une fois les modifications faites.
Commence par appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, htmlspecialchars n'est à utiliser que pour l'affichage... en aucun cas pour faire une requête
Et après, il est préférable de placer l'instruction session_start(); au début de ton code php pas en plein milieu.
Et pour finir, je t'invite à appliquer ce qui est ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
NB : !empty vérifie déjà le isset ... pas besoin de mettre les deux !
Tiens nous au courant une fois les modifications faites.
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
Modifié le 4 déc. 2017 à 12:20
Modifié le 4 déc. 2017 à 12:20
Merci! jordane45 si j’enlève la variable
et si je le mais il ne s'affiche plus mais quand je rentre le nom de l'utilisateur et le mot de passe qui déjà dans ma base de données la condition s’impose
voici le que j'ai modifier
$pseudo = htmlspecialchars($_POST['pseudo']);l'erreur suivant s'affiche la Undefined variable $pseudo
et si je le mais il ne s'affiche plus mais quand je rentre le nom de l'utilisateur et le mot de passe qui déjà dans ma base de données la condition s’impose
'Mauvais identifiant ou mot de passe !'
voici le que j'ai modifier
<?php session_start(); //connexion à la base de donnees require_once 'dbconnectM.php'; error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); if( isset($_POST['formconnex'])){ $pseudo = htmlspecialchars($_POST['pseudo']); // Hachage du mot de passe $pass_hache = password_hash($_POST['pass'], PASSWORD_DEFAULT); // Vérification des identifiants $req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array( 'pseudo' => $pseudo, 'pass' => $pass_hache)); $resultat = $req->fetch(); if (!$resultat) { $msgC = 'Mauvais identifiant ou mot de passe !'; } else { $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; $msgC = 'Vous êtes connecté !'; } } ?> <link href="main.css" rel="stylesheet" /> <meta charset="utf-8"> <h3>Se connecter</h3> <br /><br /> <form method="POST" action=""> <input type="pseudo" name="pseudo" placeholder="Mail" /> <input type="password" name="pass" placeholder="Mot de passe" /> <input type="submit" name="formconnex" value="se connecter"/> </form> <?php if(isset($msgC)) {echo '<font color="darkred">' .$msgC. '</font>';} ?>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
4 déc. 2017 à 12:44
4 déc. 2017 à 12:44
Tu as lu en diagonale ....
Il manque les blocs TRY/CATCH autour de ta requête
La récupération PROPRE des variables AVANT de les utiliser
Il manque les blocs TRY/CATCH autour de ta requête
La récupération PROPRE des variables AVANT de les utiliser
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
Modifié le 4 déc. 2017 à 13:16
Modifié le 4 déc. 2017 à 13:16
Oui on m'affiche une page blanche quand je clic sur le button
se connecter
// Vérification des identifiants $sql = 'SELECT id FROM membre WHERE pseudo = :pseudo AND pass = :pass'; $datas = array('pseudo' => $pseudo,'pass' => $pass_hache); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } return !empty($resultat) ? $resultat : NULL; $resultat = $requete->fetch(); if (!$resultat) { $msgC = 'Mauvais identifiant ou mot de passe !'; } else { $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; $msgC = 'Vous êtes connecté !'; }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
4 déc. 2017 à 13:13
4 déc. 2017 à 13:13
On t'affiche quoi comme page... ?
Et montre le code complet
Y compris le fichier de connexion
Et montre le code complet
Y compris le fichier de connexion
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 déc. 2017 à 13:25
4 déc. 2017 à 13:25
j'ai enlève la ligne 16 que j’avais ajouter dans le code. et maintenant la page blanche ne s'affiche plus, mais la condition if s’impose toujours
Mauvais identifiant ou mot de passe !
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
4 déc. 2017 à 22:56
4 déc. 2017 à 22:56
Bon...
Histoire de te faire gagner du temps... voici un code fonctionnel.
(sachant qu'il est préférable d'utiliser le password_verify" au lieu de regarder en bdd comme tu le fais...
Voici :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
Histoire de te faire gagner du temps... voici un code fonctionnel.
(sachant qu'il est préférable d'utiliser le password_verify" au lieu de regarder en bdd comme tu le fais...
Voici :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
5 déc. 2017 à 06:19
5 déc. 2017 à 06:19
ok je te tiendrais au courant merci
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
5 déc. 2017 à 20:07
5 déc. 2017 à 20:07
Bonsoir j'ai essayé le code que tu ma suggérer le problème est quand je remplir le formulaire et je clic sur registre on m'affiche : Fatal error: Call to undefined function get_cnx() parai pour le button valider aussi
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
5 déc. 2017 à 20:30
5 déc. 2017 à 20:30
Il faut t'inspirer du code ... pas forcément le copier/coller tel quel...
Mais bon...
Plus haut dans la discussion ... il y a
Mais tu peux éventuellement remplacer les lignes de code :
par
Mais bon...
Plus haut dans la discussion ... il y a
<?php // fichier de connexion à la bdd : cnxBdd.php function get_cnx(){ $bdd = NULL; try{ $bdd = new PDO('mysql:host=localhost;dbname=siteTest', $userdb, $passdb); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } return $bdd; }
Mais tu peux éventuellement remplacer les lignes de code :
$cnn = get_cnx();
par
global $bdd; $cnn = $bdd;
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
Modifié le 6 déc. 2017 à 17:20
Modifié le 6 déc. 2017 à 17:20
Bonsoir hier je travailler la dessus.
sa ne fonction qu' avec le cryptage de mot de passe
sa ne fonction qu' avec le cryptage de mot de passe
Sha1mais pas avec
password_hash($_POST['pass'], PASSWORD_DEFAULT)je sais pas pourquoi sa ne fonctionne pas avec
password_hash
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
6 déc. 2017 à 20:12
6 déc. 2017 à 20:12
quand tu utilises password_hash, utilises-tu password_verify?
il est indispensable d'utiliser password_verify, deux appels à password_hash ne vont pas retourner le même hash (heureusement).
tu peux tester avec ceci pour te convaincre:
il est indispensable d'utiliser password_verify, deux appels à password_hash ne vont pas retourner le même hash (heureusement).
tu peux tester avec ceci pour te convaincre:
<?php session_start(); echo "<br>v0.1<br>"; $motdepasse="coucou,toi"; $hache1=password_hash($motdepasse, PASSWORD_DEFAULT); $hache2=password_hash($motdepasse, PASSWORD_DEFAULT); $idem= password_verify($motdepasse, $hache1)? "ok" : "NOK"; echo $hache1; echo "<br>"; echo $idem; echo "<br>"; $idem= password_verify($motdepasse, $hache2)? "ok" : "NOK"; echo $hache2; echo "<br>"; echo $idem; echo "<br>"; ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
9 déc. 2017 à 05:44
9 déc. 2017 à 05:44
Bonjour Merci pour la réponse , j'ai essayé ce que tu ma proposé et j'ai fouiller par tous sur le net.
j'arrive toujours pas à le faire. je Bug la dessus. bon je veux me contracte avec
Je vous remercie tous de m’avoir AIDEZ
j'arrive toujours pas à le faire. je Bug la dessus. bon je veux me contracte avec
Sha1
Je vous remercie tous de m’avoir AIDEZ
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
9 déc. 2017 à 10:14
9 déc. 2017 à 10:14
très bien, peux-tu marquer alors ce sujet comme résolu?
3 déc. 2017 à 18:05
3 déc. 2017 à 18:15
as-tu d'autres questions?