salut, Je suis Samgi, jaimerais que quelqu'un me vienne en aide s'il vous plait.
voici mon problem:
j'ai créé un formulaire d'inscription pour un site web et j'ai crypté le mot passe avec password_hash, ça fonctionne normalement parceque les donnees sont enregistré dans la base comme je voulais et le mot de passe est vraiment crypté. cependant, personne ne peut pas connecté a la base apres son inscription parce que je ne sais pas comment pouvoir recuperer le mot de passe crypter en php/mysqli par le biais de mon formulair de connenxion.
est-ce que quelqu'un puisse m'aider svp en me disant comment recuperer le champ mot de passe crypter?
voici mes codes;
code de traitement du formulaire d'inscription:
code de traitement du formulaire de connexion:
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 <?php session_start(); $error=''; include 'database.php'; if(isset($_REQUEST['submit'])){ $user_firstname=$_REQUEST['fname']; $user_lastname=$_REQUEST['lname']; $user_username=$_REQUEST['username']; $user_email=$_REQUEST['email']; $user_password=$_REQUEST['password']; $user_confpass=$_REQUEST['confpass']; //On vérifie que password et password2 sont identiques if($_POST["password"] == $_POST["confpass"]){ //On utilise alors notre fonction password_hash : $hash = password_hash($user_password, PASSWORD_DEFAULT); // encore plus secure //$hash = password_hash($password, PASSWORD_BCRYPT, array('cost' => 10)); $sql="INSERT INTO user(fname,lname,username,email,password,confpass) VALUES('$user_firstname','$user_lastname','$user_username','$user_email','$hash','$hash')"; mysqli_query($database,$sql) or die(mysqli_error($database)); $_SESSION['login_user'] = $user_username; header('Location: membre.php?login_user='.$user_username); } else { $error = "Les deux mots de passe ne sont pas identiques."; } } ?>
NB: je ne peux pas comparer le mot de passe entrer par l'utilisateur avec celui qui est chiffré dans la base. comment puis-je faire svp? le formulaire d'inscription marche correctement.
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
39
40
41
42 <?php /* Page: login.php */ session_start(); // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION $error=''; // Variable To Store Error Message if(isset($_POST['submit'])) { // si le bouton "Connexion" est appuyé // on vérifie que le champ "username" n'est pas vide // empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set) if(empty($_POST['username'])) { $error = "Le champ nom d'utilisateur est vide."; } else { // on vérifie maintenant si le champ "Mot de passe" n'est pas vide" if(empty($_POST['password'])) { $error = "Le champ Mot de passe est vide."; } else { // les champs sont bien posté et pas vide, on sécurise les données entrées par le membre: $username = htmlentities($_POST['username'], ENT_QUOTES, "utf-8"); // le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL $MotDePasse = htmlentities($_POST['password'], ENT_QUOTES, "utf-8"); //on se connecte à la base de données: $mysqli = mysqli_connect("Serveur", "utilisateur", "motdepass", "ma base"); //on vérifie que la connexion s'effectue correctement: if(!$mysqli){ $error = "Erreur de connexion à la base de données."; } else { // on fait maintenant la requête dans la base de données pour rechercher si ces données existe et correspondent: $Requete = mysqli_query($mysqli,"SELECT * FROM user WHERE username = '".$username."' AND password = '".$MotDePasse."'"); // si il y a un résultat, mysqli_num_rows() nous donnera alors 1 // si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat if(mysqli_num_rows($Requete) == 0) { $error = "Le nom d'utilisateur ou le mot de passe est incorrect, le compte n'a pas été trouvé."; } else { // on ouvre la session avec $_SESSION: $_SESSION['login_user'] = $username; // la session peut être appelée différemment et son contenu aussi peut être autre chose que le username header("location: membre.php"); // Redirecting To Other Page } } } } } ?>
j'ai essayé de cette façon mais ça ne marche pas
je vous remercie à l'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 } else { //on se connecte à la base de données: $mysqli = mysqli_connect("Serveur", "utilisateur", "motdepass", "ma base"); // les champs sont bien posté et pas vide, on sécurise les données entrées par le membre: $username = mysqli_real_escape_string($mysqli, $_POST['username']); $hash = password_hash($_POST['password'], PASSWORD_DEFAULT); //on vérifie que la connexion s'effectue correctement: if(!$mysqli){ $error = "Erreur de connexion à la base de données."; } else { // on fait maintenant la requête dans la base de données pour rechercher si ces données existe et correspondent: $Requete = mysqli_query($mysqli,"SELECT * FROM user WHERE username = '".$username."' AND password = '".$hash."'");
Partager