
码:
$stmt->bind_param("s", md5($input['user'] . $config['salt']));
Run Code Online (Sandbox Code Playgroud)
PHP错误消息:
只应通过引用传递变量
我一直在研究这个项目,但现在我被困住了.我是PHP的新手.该怎么办?
感谢您使用MySQLi编写的语句!他们很痛苦,但值得.
bind_param通过引用获取值.它通过查看您传递的变量并直接指向内部来实现此目的.
在你的调用中,你将返回一个函数调用的字符串结果 - md5在这种情况下.因为没有涉及变量,所以没有内脏指向.因此,PHP抱怨无法通过引用传递数据.
您需要将函数调用的结果粘贴到变量中,然后将该变量传递给bind.
大胖警告! md5是不是安全散列任何更长的时间,并且应该不会被用来存储密码.如果有机会,您应该更新为更好的哈希格式,例如bcrypt,PBKDF2,scrypt等.
bind_param该方法的每个参数(除了第一个参数)都必须是变量,而不是像您的情况那样是函数返回值。只有变量可以通过引用传递。
考虑到这一点,您可以轻松更改代码以消除错误消息:
$input['hash'] = md5($input['pass'] . $config['salt']);
$stmt->bind_param("ss", $input['user'], $input['hash']);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |