1

我的错误日志中不断出现错误,如下所示:

[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);

因此,在建立连接之前,我实际上并没有调用它;该网站现在运行良好,我复制的错误来自当天早些时候。

4

2 回答 2

8

我很确定您是mysql_real_escape_string()在与 MySQL 服务器建立开放连接之前调用的。虽然不需要作为参数,但mysql_real_escape_string()需要 MySQL 连接。

从文档:

可选参数“link_identifier”:
MySQL 连接。如果未指定链接标识符,则假定由 mysql_connect() 打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像 mysql_connect() 没有参数被调用一样。如果未找到或建立连接,则会生成 E_WARNING 级别错误。

检查日志条目中“in ...”之后的文件。这些文件是您的应用程序的一部分吗?他们被修改了吗?或者它们是由攻击者上传的?

于 2012-12-12T18:03:37.837 回答
1

这意味着您需要通过连接到MySQL数据库mysql_connect()才能使用此功能。您的凭据mysql_connect()可能不正确。

于 2012-12-12T18:01:56.070 回答