代码:
$stmt->bind_param("s", md5($input['user'] . $config['salt']));
PHP 错误信息:
只有变量应该通过引用传递
我一直在做这个项目,但我现在卡住了。我是 PHP 新手。该怎么办?
感谢您使用 MySQLi 准备好的语句!他们很痛苦,但这是值得的。
bind_param
通过引用获取值。它通过查看您传递的变量并直接指向内脏来做到这一点。
在您的调用中,您将返回函数调用的字符串结果 -md5
在这种情况下。因为不涉及变量,所以没有内幕可指。PHP 抱怨无法通过引用传递数据。
您需要将函数调用的结果粘贴到变量中,然后将该变量传递给绑定。
大脂肪警告! 不再md5
是安全哈希,不应用于存储密码。当您有机会时,您应该更新为更好的哈希格式,例如bcrypt、PBKDF2、scrypt 等。
bind_param
该方法的每个参数(但第一个参数)必须是一个变量,而不是像您的情况那样,一个函数返回值。只有变量可以通过引用传递。
考虑到这一点,您可以轻松更改代码以消除错误消息:
$input['hash'] = md5($input['pass'] . $config['salt']);
$stmt->bind_param("ss", $input['user'], $input['hash']);