使用PHP5.3时,PHPass CheckPassword始终返回False
我正在使用PHPass,而CheckPassword函数总是返回一个false,尽管我做了很多尝试和测试。我这样做是为了一个旧的PHP版本的5.3(不幸的是),所以一定有一个细微差别我错过了 密码数据库表字段排序规则为utf8\U general\U ci(也尝试了unicode),varchar长度为62 尝试:使用PHP5.3时,PHPass CheckPassword始终返回False,php,mysqli,phpass,Php,Mysqli,Phpass,我正在使用PHPass,而CheckPassword函数总是返回一个false,尽管我做了很多尝试和测试。我这样做是为了一个旧的PHP版本的5.3(不幸的是),所以一定有一个细微差别我错过了 密码数据库表字段排序规则为utf8\U general\U ci(也尝试了unicode),varchar长度为62 尝试: $hasher = new PasswordHash(8, false); $hasher = new PasswordHash(30, false); $hasher = new
$hasher = new PasswordHash(8, false);
$hasher = new PasswordHash(30, false);
$hasher = new PasswordHash(8, true);
使用正确的sytanx:
if ($hasher->CheckPassword($password, $stored_hash)) { ... }
正在发送正确的变量内容。创建/注册和检查密码/登录脚本以及清空的数据库都发生了更改,每次都会重试。任何关于为什么我不能得到一个正确匹配的想法都会很有帮助。谢谢 尝试在不使用任何数据库的情况下手动执行。在同一个脚本文件中手动执行效果很好,adi。这是否表示哈希未正确保存到数据库?我在那里保存了大约32个字符的散列密码记录。这就是为什么我对MySQL排序规则进行了一些修改,看看它是否有什么不同。在一次成功的散列之后,它以足够长的长度保存在声明的推荐varchar中,所以我很困惑。不知道为什么一个单独的脚本文件会有不同。(我通过电子邮件链接确认注册,并在提供登录之前继续。)更新:我从头开始重新构建代码,它可以正常工作(?)可能是任意的,但我基本上在没有任何验证/过滤的情况下剪切和粘贴了主要方面。因此,它既不取决于CheckPassword的工作方式,也不取决于posted表单读取的数据,也不取决于数据库哈希。这是对数据库的实际保存,因为我之前对其他帐户进行了测试,但仍然返回false。是时候休息一下了,我需要把剩下的部分重新写进去,如果我找到了真正的罪魁祸首,我会把我的结果和我在这几天的研究中发现的其他有用信息一起发布在这里。塔克斯!