使用 PHP myadmin 的登录系统无法正常工作

Login system using PHP myadmin not working

我按照教程使用 php 创建了一个简单的登录系统。我已经安装了 wampserver 并从 phpmyadmin 面板创建了数据库。它不起作用,我相信这是服务器的问题。当我创建数据库时,那里出现的服务器是 mysql wampserver,而在教程中是 localhost。我将 config.inc.php 中的服务器名称更改为 localhost,但仍然无法正常工作。当我单击登录按钮时,它会返回到 wampserver 的索引页面。我会分享我的代码,也许有人可以找到这个错误,因为我无法弄清楚我做错了什么。

dbConnect.php

<?php
$dbCon = mysqli_connect("localhost", "root", "", "tests");
?> 

user.php

<?php
session_start();

if (isset($_SESSION['id'])) {
    // Put stored session variables into local PHP variable
    $uid = $_SESSION['id'];
    $usname = $_SESSION['username'];
    $result = "Test variables: <br /> Username: ".$usname. "<br /> Id: ".$uid;
} else {
    $result = "You are not logged in yet";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $usname ;?> - Test Site</title>
</head>

<body>
<?php
echo $result;
?>
</body>
</html>

first.php

<?php
session_start();

if (isset($_POST['username'])) {

        // Include the databas connection script
    include_once("dbConnect.php");

    $usname = strip_tags($_POST['username']);
    $paswd = strip_tags($_POST['password']);

    //$usname = mysqli_real_escape_string($dbCon, $usname);
    //$paswd = mysqli_real_escape_string($dbCon, $paswd);



    $sql = "SELECT id, username, password FROM members WHERE username = '$usname' AND activated = '1' LIMIT 1";
    $query = mysqli_query($dbCon, $sql);
    $row = mysqli_fetch_row($query);
    $uid = $row[0];
    $dbUsname = $row[1];
    $dbPassword = $row[2];

    // Check if the username and the password they entered was correct
    if ($usname == $dbUsname && $paswd == $dbPassword) {
        // Set session 
        $_SESSION['username'] = $usname;
        $_SESSION['id'] = $uid;
        // Now direct to users feed
        header("Location: user.php");
    } else {
        echo "<h2>Oops that username or password combination was incorrect.
        <br /> Please try again.</h2>";
    }

}
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic login system</title>
</head>

<body>
<div id="wrapper">
<h1>Simple PHP Login</h1>
<form id="form" action="index.php" method="post" enctype="multipart/form-data">
Username: <input type="text" name="username" /> <br />
Password: <input type="password" name="password" /> <br />
<input type="submit" value="Login" name="Submit" />
</form>
</body>
</html>

RhapX 试图解释的是您的表单操作告诉表单 post 数据的位置。目前,您有

<form id="form" action="index.php" method="post" enctype="multipart/form-data">

这意味着一旦用户点击提交,它就会将它们发送到 index.php 并将与他们一起发送 $_POST 数据。但是您是说 first.php 是实际执行所有工作的文件,因此您需要将用户和 $_POST 数据发送到 first.php。将其更改为:

<form id="form" action="first.php" method="post">

(将操作更改为 first.php 并去掉 enctype——它可能是正确的,但完全没有必要,我已经看到它给一些人带来了问题。)