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 un
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');
sauf 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.

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>