2

我有一个表单,用户可以在其中输入他们的数据库信息,然后可以单击使用 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”的条目在哪里。我删除了这些用户,脚本按预期工作。我更新了这篇文章,为遇到类似问题的人提供了一个屏幕截图。感谢下面的法比奥的建议!

MYSQL 中的用户表包含以下条目

4

1 回答 1

5

root那是因为 mysql_connect 在连接时使用了一些默认值,如果我没记错的话,应该是用户名和密码的空白字符串。或者可以是运行网络服务器的用户名。

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

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

于 2011-09-05T20:23:25.510 回答