【问题标题】:php to MySQL using PDO with bcrypt [closed]php 到 MySQL 使用 PDO 和 bcrypt [关闭]
【发布时间】:2014-07-09 18:44:33
【问题描述】:

我一直在使用带有 MD5 安全性的 MySQL 4.x 和 PHP 5.0。由于某些情况,我必须使用 PHP 5.3 和 bcrypt 和 PDO for MySQL。

附件是我从here 使用并采用的示例代码。它在运行时不包含任何语法错误,但它不起作用。 'while' 语句中的 var_dump 不给出任何输出。

$email = strtolower($_POST['email']);
$pw = $_POST['pw'];

$chk_email= $dbh->prepare("SELECT pw FROM users WHERE email = $email");
$chk_email -> execute(array($email));

while($row = $chk_email->fetch(PDO::FETCH_ASSOC)){
    $chk_pass = $row['pw']; 
    $pass_isGood = $bcrypt->verify($_POST['pw'], $chk_pass);
    var_dump($pass_isGood); 

}

由于我是 bcrypt 和 PDO 的新手,我确信这只是语法问题。任何指针都非常感谢。提前谢谢。

【问题讨论】:

  • 抱歉,说“MD5 安全”表示您不知道“MD5”是什么以及“安全”是什么意思。

标签: php mysql pdo bcrypt


【解决方案1】:
$chk_email= $dbh->prepare("SELECT pw FROM users WHERE email = ?");
$chk_email -> execute(array($email));
$row = $chk_email->fetch(PDO::FETCH_ASSOC));

$pass_isGood = $bcrypt->verify($_POST['pw'], $row['pw']);
if(!$pass_isGood){
    echo "Incorrect password";
}else{
    echo "Good password";
}

【讨论】:

    【解决方案2】:

    将您的准备语句更改为:

    $chk_email = $dbh->prepare("SELECT pw FROM users WHERE email = ?");
    

    【讨论】:

    • 还是一无所获...
    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    相关资源
    最近更新 更多