bonjour,
je travail sur le stockage et la lecture des mots de passe après le "hachage".
Je dispose d'un formulaire d'inscription en deux pages PHP car j'utilise la méthode POST.
jusqu'ici je n'est pas de problèmes, j'enregistre bien dans ma base MySql les Pseudo ainsi que le mot de passe hacher.
Mais lorsque je fais appel au formulaire d'authentification >> la confrontation des mots de passe ne marche pas !
pour le login j'utilise le pseudo et le mot de passe d'un utilisateur enregistré.
Pour l'authentification j'utilise deux formulaires dont voici le code :
1/ connection.php
2/ connection_post.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <?php session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>login Espace MEMBRE</title> </head> <style> form { text-align:center; } </style> <body> <form action="connection_post.php" method="post"> <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" placeholder= "pseudo" value="<?php htmlspecialchars($pseudo); ?>" /><br /> <label for="pass">Mot de passe</label> : <input type="password" name="pass" placeholder= "pass" value="<?php htmlspecialchars($pass); ?>" /><br /> <input type="submit" value="Envoyer" /> </p> </form> </body> </html>
Mon second problème que je trouve dans le log apache sous linux Debian
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=espace_membre;charset=utf8', 'root', 'dacas'); $bdd->setAttribute ( PDO::ATTR_EMULATE_PREPARES , false ); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Hachage du mot de passe $pseudo = $_POST['pseudo']; $pass_hache = password_hash($_POST['pass'], PASSWORD_DEFAULT); // Vérification des identifiants $req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array( 'pseudo' => $pseudo, 'pass' => $pass_hache)); $resultat = $req->fetch(); if (!$resultat) { echo 'Mauvais identifiant ou mot de passe !'; } else { session_start(); $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; echo 'Vous êtes connecté !'; }
je comprends pas car l'execption levé dans le log et que ma varible pass n'est pas connu alors qu'elle corresponds a un champs de ma table.Undefined variable: pass in /var/www/html/cours/espace_menbre/connection.php on line 22, referer: http://127.0.0.1/cours/espace_menbre/
Salutations
philippe
Partager