Salut les gars (et filles, on sait jamais),
Je bloque sur un problème depuis plusieurs jours, j'ai beau chercher et même trouver, je ne suis pas plus avancé car je ne comprends pas.
Comme beaucoup de personne qui étaient dans mon cas et qui ont résolu leur problème grâce aux forums, j'ai créé un site avec bdd et un espace membre. L'enregistrement est ok, ça se passe bien, le mdp est hashé avec password_hash.
Là où ça se corse pour moi, mais qui sera évident pour vous je l'imagine, c'est la partie log in avec le password verify.
J'ai suivi le tuto vidéo sur youtube de PrimFx sauf qu'il utilise sha1 (et oui, ça date de 2015), donc la technique ici n'est plus la même.
Je sais qu'il faut que je mette unsauf que je ne sais absolument pas où l'insérer dans mon code. J'ai testé quelques trucs mais je me retrouve avec des erreurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(password_verify('le mot de passe saisi', 'le mot de pass hashé dans le bdd');
De plus, je ne sais pas comment aller chercher le mot de passe haché dans ma bdd pour le comparer. Est-ce que je dois créer une variable?
Bref vous l'aurez compris, je suis un peu dépassé et j'aimerais comprendre.
Voici mon code entier :
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 <?php session_start(); $bdd = new PDO('mysql:host=127.0.0.1;dbname=calendar', 'root', ''); if(isset($_POST['signin'])) { $mailin = htmlspecialchars($_POST['mailin']); $passwordin = $_POST['passwordin']; $passwordin = password_verify($passwordin, $hashpass); if(!empty($mailin) AND !empty($passwordin)) { $requser = $bdd->prepare("SELECT * FROM members WHERE mail = ? AND password = ?"); $requser->execute(array($mailin, $passwordin)); $userexists = $requser->rowCount(); if($userexists == 1) { $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['username'] = $userinfo['username']; $_SESSION['mail'] = $userinfo['mail']; header("Location: profil.php?id=".$_SESSION['id']); } else { $error = "Wrong mail or password"; } } else { $error = "Please fill all the fields"; } } ?> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- META --> <title>CRIT | Calendar</title> <!-- CSS --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Anton" rel="stylesheet"> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/css/flag-icon.min.css" rel="stylesheet"/> <!-- CSS --> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-133907448-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-133907448-1'); </script> </head> <body> <table class="user"> <form action="" method="POST"> <tr> <td> <input type="email" placeholder="Username" id="mailin" name="mailin" /> </td> </tr> <tr> <td> <input type="password" placeholder="Password" id="passwordin" name="passwordin" /> </td> </tr> <tr> <td> <input type="submit" name="signin" value="Sign in" /> </td> </tr> </table> </form> <?php if(isset($error)) { echo $error; } ?> </body> </html>
Partager