PHP和SQL登录 - “找不到用户”

时间:2015-01-12 16:45:47

标签: php mysql

我刚刚开始学习如何使用SQL数据库。我正在关注youtube的教程;但是,我似乎在连接数据库时遇到问题。我在cPanel中使用phpMyAdmin和MySQL。

当我测试登录页面时,我输入了我在phpMyAdmin中手动设置的用户帐户的信息,但它一直返回错误,&#34;找不到您输入的用户名。&#34; < / p>

我做错了什么?我知道我输入了正确的数据库用户名和密码以及正确的数据库名称。

这是我的connect.php:

<?php

mysql_connect("localhost", "username", "password");
mysql_select_db("databasename");

?>

这是我的login.php:

if ($_POST['loginbtn'])
{
$user = $_POST['user'];
$password = $_POST['password'];

if ($user)
{
    if ($password)
    {
        require("connect.php");

        $password = md5(md5("additional".$password."additional"));

        // echo "$password";

        $query = mysql_query("SELECT * FROM users WHERE username='$user'");
        $numrow = mysql_num_rows($query);
        if (!numrows == 1)
        {
            $row = mysql_fetch_assoc($query);

            $dbid = $row['id'];
            $dbuser = $row['username'];
            $dbpass = $row['password'];
            $dbactive = $row['active'];

            if ($password == $dbpass)
            {
                if ($dbactive == 1)
                {
                    //set session info
                    $_SESSION['userid'] = $dbid;
                    $_SESSION['username'] = $dbuser;

                    echo "You have been logged in as <b>$dbuser</b>. <a href='./member.php'>Click here</a> to go to the member page.";
                }
                else
                    echo "You must activate your account before you can logon. $form";
            }
            else
                echo "You did not enter the correct password. $form";
        }
        else
            echo "The username you entered was not found. $form";

        mysql_close();
    }
    else
        echo "You must enter your password. $form";
}
else 
    echo "You must enter your username. $form";
}
else
echo $form;

?>

1 个答案:

答案 0 :(得分:2)

正如我和@ Fred-ii-所注意到的,你可能遇到的问题在于以下两行:

$numrow = mysql_num_rows($query);
if (!numrows == 1)

第一行很好,但您可能需要$numrows

第二行是问题所在。

目前,您的if相当于:

if( !(defined('numrows') || 'numrows') == 1 )

或更准确地说:

if( defined('numrows') )
{
    if( !numrows == 1 )
    {
        // [code here ...]
    }
}
else if( !'numrows' == 1 )
{
    // [same code here ...]
}

这不是你想要的。 (当未定义时,PHP隐式将未知常量转换为字符串)

此外,您正在检查numrows的否定是否为1.发生这种情况的唯一方法是numrows为0时,但是如果成功则继续执行代码。

你应该用这个:

$numrows = mysql_num_rows($query);
if ($numrows)

或更短:

if ( mysql_num_rows($query) )

为什么我不做$numrows==1

嗯,任何不同于0的数字都等于布尔值True,因此,使得该检查几乎无用。
它只对可读性有帮助。