我写了一个PHP脚本来处理用户登录.为了防止SQL注入攻击,我使用了'mysql_real_escape_string'函数.一切都很好,直到今天.我已经跟踪了代码并发现了问题; 使用'mysql_real_escape_string'的行.我已将其更改为以下基本命令:
$username=mysql_real_escape_string('sample');
var_dump($username)
Run Code Online (Sandbox Code Playgroud)
输出是:
bool(false)
Run Code Online (Sandbox Code Playgroud)
在我的本地Web服务器(WAMP)上一切正常,但在远程主机上出现问题!怎么了?(主机PHP是5.4.12)
根据http://php.net/manual/en/function.mysql-real-escape-string.php
返回转义字符串,如果出错则返回FALSE.
它在错误时返回false;
将以下行添加到文件的头部:
error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)
所以你可以查看错误.
mysql_real_escape_string('sample')
根据http://us1.php.net/mysql-real-escape-string中的第一个错误,在使用函数Thats 之前忘记建立mysql连接是可能的.
在使用mysql_real_escape_string()之前需要MySQL连接,否则会生成级别为E_WARNING的错误,并返回FALSE.
您应该知道有更好的方法来阻止SQL注入,您可以在此处查看: 如何在PHP中阻止SQL注入?