-2

我无法登录。单击按钮登录时,它显示错误的用户名或密码。数据库是 id、用户名、密码和级别。选择id, username, password,levellogin

<?php
ob_start();
$message = "";
if ( isset ($_POST['login']))
  {
   include 'admin/dbconnect.php';
   $username = $_POST['username'];
   $password = $_POST['password'];
   if ($username != "" && $password != "")
   {

    $sql = "SELECT * FROM login WHERE username = '$username' and password = '$password' ";
    $result = mysql_query($sql) ;
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    if (mysql_num_rows($result) ==1)
    {
        session_start();
        $_SESSION['isLogged_in'] = true;
        $_SESSION['username'] = $row['username'];
        $_SESSION['level'] = $row['level'];
        $message = 'Logged-in successfully';
        }
        else
        {
            $message = 'WRONG USERNAME OR PASSWORD';
        }
    }

    else
    {
        $message = 'PLEASE RE-INPUT YOUR USERNAME AND PASSWORD';
    }
    }


    ?>
4

2 回答 2

1

使用 mysql_escape_string 来防止 sql 注入,如果你有 php 5.5.0 或更高版本,你应该使用 mysqli 之类的东西,因为所有 mysql_ 命令都已弃用。

$sql = sprintf("SELECT * FROM login WHERE username = '%s' and password = '%s'", mysql_real_escape_string($username), mysql_real_escape_string($password));

至于实际问题,可能就像其他人所说的那样(数据库连接),为了安全起见,请说:(如果可能的话,对于多个条目)

if (mysql_num_rows($result))
于 2013-04-01T07:04:15.963 回答
-2

你可以尝试使用:

SELECT * FROM login WHERE username = '$username' and password = '$password' LIMIT 1

LIMIT 1在最后。

也许您有多行匹配相同的用户名和密码。

于 2013-04-01T07:12:01.557 回答