我的错误日志中不断出现错误,如下所示:
[12-Dec-2012 10:19:11] PHP Warning: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: Access denied for user 'jcummings'@'localhost' (using password: NO) in ...<rest of the code here has been obfuscated>...
我想知道的是'jcummings'(在这种情况下)或者那里显示的任何用户名。我有几个不同的用户名出现,但它从来没有任何我与我的网站关联的用户名,也不是任何数据库中的任何变量或我网站上的任何东西,真的。只有当我在网站上收到错误时才会发生这种情况,它会根据网站(我正在测试不同网站的子文件夹)和不同时间的不同名称给出不同的名称。
这是我应该关注的事情,还是只是php服务器投入临时名称?
编辑: 我的代码看起来像这样:
$var = $_GET['var'];
$var = stripslashes($var);
$var = mysql_real_escape_string($var;
//connect
mysql_connect("$host", "$username", "$password") or die ("Could not connect");
mysql_select_db("$dbName") or die ("Could not select DB");
//query
$sql = "SELECT * FROM $dbTable WHERE tarVar = '$var'";
$result = mysql_query($sql);
所以在实现连接之前,我实际上并没有调用它。这个网站现在工作正常,我复制的错误来自当天早些时候。
答案 0 :(得分:8)
在您与MySQL服务器建立开放连接之前,我很确定您正在调用mysql_real_escape_string()
。虽然不需要作为参数,mysql_real_escape_string()
需要MySQL连接。
来自文档:
可选参数“link_identifier”:
MySQL连接。如果 链接标识符未指定,最后一个链接打开 假设是mysql_connect()。如果没有找到这样的链接,它会尝试 创建一个,好像没有参数调用mysql_connect()。如果不 找到或建立连接,E_WARNING级别错误是 生成。
检查日志条目中“in ...”后面的文件。这些文件是您的申请的一部分吗?他们被修改了吗?或者他们是由攻击者上传的?
答案 1 :(得分:1)
这意味着您需要先通过mysql_connect()
连接到MySQL数据库,然后才能使用此功能。您mysql_connect()
的凭据可能不正确。