php mongodb 验证表单密码

php mongodb validate form password

这是我第一次使用 mongodb 和 php,我有一个注册和登录表单。当用户注册时,我使用 password_hash() php 函数成功地散列他的密码并将其插入 mongodb 集合中。但是,当我登录并插入密码时,我想使用 password_verify()

检查插入的密码是否与集合中的散列密码相对应

我找不到正确的语法来遍历集合并检查哈希密码是否与我登录时给定的密码匹配。

我的代码:

<?php

 
require '../vendor/autoload.php';

$m = new MongoDB\Client("mongodb://127.0.0.1/");
$db = $m ->ECommerce;

$collection = $db->users;


if($_POST){

  $uname = $_POST['uname'];
  $pwd = $_POST['pwd'];

  //which  is the second argument here ? I want to add the database password as argument 
  $cursor = $collection->find(array('password'=> password_verify($pwd ,...) ));

  foreach ($cursor as $doc){
      echo $doc["firstName"];
  }
  

}

?>

如果你喜欢使用 password_verify() 函数,那么我想你必须 运行 像这样:

$cursor = $collection->find(array('username' => $uname ));
foreach ($cursor as $doc){
   if ( password_verify($pwd, $doc["password"]) ) {
     echo $doc["firstName"];
   }
}

或使用单个查询:

$cursor = $collection->find(array('username' => $uname, 'password' => password_hash($pwd) ));