注册成功后无法登录数据库


cant login after successfully register to database

这是我的登录码,不知道什么是错的(最后一个if,总是去最后一个else)。我什么都试过了,但还是不行。

<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
if($_POST['submit']){
    include_once("connection.php");
    $username = strip_tags($_POST['username']);
    $password = strip_tags($_POST['password']);
    $sql = "SELECT id, username, password FROM user WHERE username = '$username' AND password = '$password'";
    $query = mysqli_query($connection, $sql);
    if($query){
        $row = mysqli_fetch_row($query);
        $userId = $row[0];
        $dbUsername = $row[1];
        $dbPassword = $row[3];
    }
    if ($username = $dbUsername && $password == $dbPassword) {
        $_SESSION['username'] = $username;
        $_SESSION['id'] = $userId;
        header('Location: users.php');
    }else {
        header('Location: error.php');
    }
}
?>

和连接代码

<?php
$connection = mysql_connect('localhost', 'root', '');
if (!$connection){
    die("Database Connection Failed" . mysql_error());
}
$select_db = mysql_select_db('login');
if (!$select_db){
    die("Database Selection Failed" . mysql_error());
}
?>

你会后悔的…你的if中只有一个=

if ($username = $dbUsername && $password == $dbPassword) {
应该

if ($username == $dbUsername && $password == $dbPassword) {

单个=将其变为赋值而不是比较。

除此之外,你实际上做了两次比较;第一次在SQL中获取用户名和密码,第二次在PHP中。如果您的查询返回用户id,那么您已经知道用户名/密码起了作用。

你也混合了mysql_connectmysqli_query(和mysql_fetch_row)。正如其他人所建议的,您需要转到mysqli类或PDO。但是为了让您继续,您至少需要将mysqli_query更改为mysql_query,将mysqli_fetch_row更改为mysql_fetch_row

使用mysql_query($connection, $sql)代替mysqli_query($connection, $sql);当你使用mysql_connect