我写了一个PHP脚本来处理用户登录。为了防止SQL注入攻击,我使用了'mysql_real_escape_string'函数。一切都很好,直到今天。我已经跟踪代码并找到了问题;使用'mysql_real_escape_string'的行。我已将其更改为以下基本命令:
$username=mysql_real_escape_string('sample');
var_dump($username)
输出结果为:
bool(false)
在我的本地Web服务器(WAMP)上一切正常,但在远程主机上出现问题!怎么了? (主机PHP是5.4.12)
答案 0 :(得分:9)
根据http://php.net/manual/en/function.mysql-real-escape-string.php
返回转义字符串,错误时返回FALSE。
错误时返回false;
将以下行添加到文件头部:
error_reporting(E_ALL);
所以你可以查看错误。
在使用函数mysql_real_escape_string('sample')
之前,您可能忘记建立mysql连接
这是根据http://us1.php.net/mysql-real-escape-string
在使用mysql_real_escape_string()之前需要MySQL连接 否则会生成E_WARNING级别的错误,FALSE为 返回。
您应该知道有更好的方法来阻止SQL注入,您可以在此处查看: How can I prevent SQL injection in PHP?
答案 1 :(得分:2)
返回转义字符串,如果出错则返回FALSE。
我无法告诉你错误是什么,但几乎可以肯定:
注意:强>
在使用
mysql_real_escape_string()
之前需要MySQL连接,否则会生成级别E_WARNING
的错误,并返回FALSE
。如果未定义link_identifier
,则使用最后一个MySQL连接。