1

代码:

$stmt->bind_param("s", md5($input['user'] . $config['salt']));

PHP 错误信息:

只有变量应该通过引用传递

我一直在做这个项目,但我现在卡住了。我是 PHP 新手。该怎么办?

4

2 回答 2

10

感谢您使用 MySQLi 准备好的语句!他们很痛苦,但这是值得的。

bind_param通过引用获取值。它通过查看您传递的变量并直接指向内脏来做到这一点。

在您的调用中,您将返回函数调用的字符串结果 -md5在这种情况下。因为不涉及变量,所以没有内幕可指。PHP 抱怨无法通过引用传递数据。

您需要将函数调用的结果粘贴到变量中,然后将该变量传递给绑定。

大脂肪警告! 不再md5是安全哈希,应用于存储密码。当您有机会时,您应该更新为更好的哈希格式,例如bcrypt、PBKDF2、scrypt 等

于 2012-12-10T04:27:27.387 回答
4

bind_param该方法的每个参数(但第一个参数)必须是一个变量,而不是像您的情况那样,一个函数返回值。只有变量可以通过引用传递

考虑到这一点,您可以轻松更改代码以消除错误消息:

$input['hash'] = md5($input['pass'] . $config['salt']);
$stmt->bind_param("ss", $input['user'], $input['hash']);
于 2012-12-10T06:24:32.957 回答