gpt4 book ai didi

php - 尝试为bcrypt哈希算法指定成本基准时,出现解析错误?

转载 作者:行者123 更新时间:2023-12-03 08:21:59 25 4
gpt4 key购买 nike

无法弄清楚为什么我的代码中会出现解析/语法错误,该错误在我的本地主机服务器上有效,但是当我将其上传到我的网络主机时,我得到了语法错误:“第3行出现意外的'['”。

我在这里有一个粘贴链接:http://codepad.org/26K93MPG

这是我的代码:

<?php

$options = [
'cost' => 9,
];

$unhashedPassword = 'testingtesting';
$hashedPassword = password_hash($unhashedPassword, PASSWORD_BCRYPT, $options);

echo $unhashedPassword . "<br>";
echo $hashedPassword;

?>

已修正!
这是我修复问题的方式,以及发生问题的简短说明:

首先,我的本地主机服务器的PHP版本是5.6.4,生产服务器的PHP版本是5.3.29。由于password_hash()函数是在5.3.7版中首次引入的,因此很明显它没有起作用。

其次,我使用的数组语法仅在PHP版本5.3或更早版本中允许。但是旧的语法也没有使它起作用,那是因为那个时候也没有在PHP中实现password_hash()函数。

要解决这两个问题:

1)转到 https://github.com/ircmaxell/password_compat/blob/master/lib/password.php

2)将该库文件放入文件夹中,并在登录过程中包含password.php。

3)将数组语法更改为此,它很简洁:
<?php
include("password_hash_compatibility.php");

$unhashedPassword = 'testingtesting';
$hashedPassword = password_hash($unhashedPassword, PASSWORD_BCRYPT, array("cost" => 9));

echo $unhashedPassword . "<br>";
echo $hashedPassword;

?>

最佳答案

您的生产服务器运行的是PHP 5.3或更早版本,因此不提供introduced in PHP 5.4数组速记语法。只需使用“旧”数组语法即可向后兼容:

$options = array(
'cost' => 9,
);

这就是为什么您应始终确保开发环境与生产环境尽可能匹配的原因。

关于php - 尝试为bcrypt哈希算法指定成本基准时,出现解析错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com