Log.php从MySQL数据库返回“无效用户”

时间:2011-05-10 22:59:06

标签: php mysql login

我正在从本地计算机托管一个网站(在Mac上使用MAMP Pro),并且需要将托管切换到另一台本地Mac。我已经复制了我的网站和MySQL表的所有文件,并检查了服务器和MySQL运行正常。一切似乎都很好,除了当我尝试登录时登录系统返回“无效用户”,即使我输入了正确的用户信息(我已经尝试了一些用户以确定)。

处理登录的log.php如下所示:

<?
session_name("MyLogin");
session_start();

if($_GET['action'] == "login") {
$conn = mysql_connect("localhost","root","password"); // your MySQL connection data
$db = mysql_select_db("nick"); //put your database name in here 
$name = $_POST['user'];
$q_user = mysql_query("SELECT * FROM USERS WHERE login='$name'");

if(mysql_num_rows($q_user) == 1) {

$query = mysql_query("SELECT * FROM USERS WHERE login='$name'");
$data = mysql_fetch_array($query);
if($_POST['pwd'] == $data['password']) { 
$_SESSION["name"] = $name;
header("Location: http://monthlymixup.com/may.php"); // success page. put the URL you want 
exit;
} else {
header("Location: login.php?login=failed&cause=".urlencode('Wrong Password'));
exit;
}
} else {
header("Location: login.php?login=failed&cause=".urlencode('Invalid User'));
exit;
}
}

// if the session is not registered
if(session_is_registered("name") == false) {
header("Location: login.php");
}

?>

我已暂时删除了上述代码中的密码。

我想知道我可以采取哪些措施来解决这个问题,并感谢您的帮助。

谢谢,

尼克

2 个答案:

答案 0 :(得分:1)

遇到此问题时的一些常用技巧。

  1. 输出生成的SQL并手动测试 - echo $query;
  2. 在运行查询后查看mysql_error()是否输出任何内容。
  3. 在数据对象上使用var_dump()print_r(),以确保它们符合预期。
  4. 注释掉您的重定向和exit()行,以便您可以确定脚本的中断位置。
  5. 使用上述内容确定的任何内容进行修复或评论。

答案 1 :(得分:0)

您的代码执行查询以查找具有给定用户名的用户,然后检查具有该用户名的行数是否正好为1。

您可以看到“无效用户”错误的唯一方法是,如果有0个用户使用该用户名,或者超过1个用户使用该用户名。

查看表的内容并检查其中的哪一个(我建议http://sequelpro.com用于查看Mac上的数据库内容)。您还可以使用续集专业版来测试您的查询。