PHP:mysql_connect没有返回FALSE

时间:2011-09-05 20:16:32

标签: php mysql ajax mysql-connect

我有一个用户输入数据库信息的表单,可以单击使用AJAX将凭据发送到此页面的链接。我遇到的问题是,只要输入正确的主机名,脚本就会返回TRUE

是否有另一种方法来测试它,以便在用户名和密码无效时返回FALSE

$h  =   urldecode($_GET['h']);
$u  =   urldecode($_GET['u']);
$p  =   urldecode($_GET['p']);

$con = mysql_connect($h, $u, $p);

if(!$con){
    echo 'Could not connect';
}

else{
    echo 'Connected';
}

解决!

为了将来参考,问题是mysql用户表中的user =“Any”的条目。我删除了这些用户,脚本按预期工作。我更新了这篇文章,为任何有类似问题的人提供了一个屏幕截图。感谢Fabio below提出建议!

The user table in MYSQL included entries for "any" user.

1 个答案:

答案 0 :(得分:5)

这是因为mysql_connect在连接时使用了一些默认值,对于用户名应该是root,如果我正确记住它,则使用密码的空字符串。或者可以是网络服务器运行的用户名。

这可能意味着您的数据库服务器接受无密码的根连接(来自Web服务器计算机),这非常危险。您应该查看数据库配置和用户列表。

从安全的角度来看,您的代码不是很安全,数据库凭据是以明文形式传输的,并且根据经验,最终用户不应输入数据库凭据(除非您正在编写类似PhpMyAdmin的工具)。