3

我刚刚安装了 xampp,所以我可以离线测试我的网站。现在我得到了许多未定义的索引或未定义的变量错误,我知道如何修复。现在登录可以在线工作,但使用 xampp 无法正常工作。代码没有错。我将数据库在线导入到离线。我已经指出了问题所在,但不知道如何解决。

这是我测试登录详细信息是否正确的代码。

$Blowfish_Pre = '$2a$05$';
$Blowfish_End = '$';
$hashed_password = crypt($password, $Blowfish_Pre . $salt . $Blowfish_End);

//check to see if they match
if ($username==$dbusername&&$hashed_password==$dbpassword){

离线$hashed_password账户的回显是$2a$05$CEDaiUETMOTuZ1tzSX1dW.1rmbYfiu1Hf6jnZyJ5DouQOIHEPwXiW

在线$hashed_password帐户的回显是

$2J7rPSsTYb1Q

我已经确定 crypt 的在线工作方式与离线工作方式不同?为什么会这样,我该如何解决?

4

2 回答 2

4

crypt()根据系统提供的内容使用不同的哈希算法。从 PHP 5.3 开始,它“包含自己的实现,如果系统缺乏对一种或多种算法的支持,它将使用它”。

正如您在开始时看到的那样,您的离线版本确实使用了河豚$2a$。您的在线版本确实使用了一些后备。

见: http: //php.net/manual/en/function.crypt.php

于 2012-09-12T09:27:58.057 回答
0

我无法发表评论..所以我把这个答案放在希望我可以节省一些人的时间。我问了同样的问题,而选择的答案使我找到了解决方案。但由于它没有提供我的最终解决方案,我想我会分享以节省时间。

我的 wamserver 是 PHP 5.38 我发现我的生产服务器是 5.2x 我只是要求他们将我升级到最新版本,即 5.4.22 ......这就解决了这个问题。相同的代码再次开始踢出 60 个字符的哈希值。

所以我敢打赌,如果你有同样的情况,请将服务器升级到最新版本的 PHP 或超过 5.3 的版本,你应该会很好。

于 2014-01-04T01:17:23.650 回答