PHP用户登录系统问题-只有最后一个用户才能登录

PHP用户登录系统问题-只有最后一个用户才能登录,php,html,Php,Html,我正在尝试使用php创建一个登录系统。我试图创建的是有一个页面,要求用户名,密码,电子邮件。然后,当用户填写字段进入下一页时,将要求用户输入用户名和密码,以便登录系统。此外,我已经创造了一些东西,但没有正常工作。表单已正确提交,我将数据接收到数据库中,但当用户尝试登录到系统时,它将只允许最后一个注册的用户使用其凭据登录到系统中。对于所有其他也已注册的用户,登录不起作用。有人能帮忙解决这个问题吗 谢谢 我的HTML和PHP代码: <div class="container">

我正在尝试使用php创建一个登录系统。我试图创建的是有一个页面,要求用户名,密码,电子邮件。然后,当用户填写字段进入下一页时,将要求用户输入用户名和密码,以便登录系统。此外,我已经创造了一些东西,但没有正常工作。表单已正确提交,我将数据接收到数据库中,但当用户尝试登录到系统时,它将只允许最后一个注册的用户使用其凭据登录到系统中。对于所有其他也已注册的用户,登录不起作用。有人能帮忙解决这个问题吗

谢谢

我的HTML和PHP代码:

<div class="container">
    <div class="row">
        <div class="col-xs-12">
            <h2>Please sign in with your username<br>
            and password to complete the form... Thanks!!!</h2>
            <form method="post" action="success.php">

               <?php
                    if(isset($_POST['login'])) {

                        $username = $_POST['user_username'];
                        $password = $_POST['user_password'];


                        $query = "SELECT * FROM users_info";

                        $result = mysqli_query($connection, $query);

                        while($row = mysqli_fetch_assoc($result)) {
                            $db_username = $row['user_username'];
                             $db_password = $row['user_password'];
                        }

                        if($username !== $db_username) {
                            echo "Username does not exist";
                        }else if ($password !== $db_password) {
                            echo "Password does not exist";
                        }else {
                            header("Location: form.php");
                        }

                    }
                ?>

                <div class="form-group">
                   <label for="user_username">Enter Username</label>
                    <input type="text" name="user_username" class="form-control" required>
                </div>
                <div class="form-group">
                   <label for="user_username">Enter Password</label>
                    <input type="password" name="user_password" class="form-control" required>
                </div>
                <div class="form-group">
                    <input type="submit" name="login" value="Log In" class="btn btn-success">
                </div>
            </form>

        </div>
    </div>
</div>

请使用您的用户名登录
和密码来完成表格。。。谢谢 输入用户名 输入密码
您需要将查询限制为仅获取试图登录的用户信息。注意,这不包括有关SQL安全或错误报告的传入注释。我强烈建议您进行错误检查,查看获取的结果是否为空,然后继续

<div class="container">
    <div class="row">
        <div class="col-xs-12">
            <h2>Please sign in with your username<br>
            and password to complete the form... Thanks!!!</h2>
            <form method="post" action="success.php">

               <?php
                    if(isset($_POST['login'])) {

                        $username = $_POST['user_username'];
                        $password = $_POST['user_password'];


                        //Fetch matching user data
                        $query = "SELECT * FROM users_info WHERE user_username = '$username' AND user_password = '$password'";

                        $result = mysqli_query($connection, $query);

                        while($row = mysqli_fetch_assoc($result)) {
                            $db_username = $row['user_username'];
                             $db_password = $row['user_password'];
                        }

                        if($username !== $db_username) {
                            echo "Username does not exist";
                        }else if ($password !== $db_password) {
                            echo "Password does not exist";
                        }else {
                            header("Location: form.php");
                        }

                    }
                ?>

                <div class="form-group">
                   <label for="user_username">Enter Username</label>
                    <input type="text" name="user_username" class="form-control" required>
                </div>
                <div class="form-group">
                   <label for="user_username">Enter Password</label>
                    <input type="password" name="user_password" class="form-control" required>
                </div>
                <div class="form-group">
                    <input type="submit" name="login" value="Log In" class="btn btn-success">
                </div>
            </form>

        </div>
    </div>
</div>

请使用您的用户名登录
和密码来完成表格。。。谢谢 输入用户名 输入密码
必须在循环中使用条件。因为你所做的是错误的。请接触更多PHP基础知识和一些基本登录系统

您的SQL查询应该如下所示:

 $query = "SELECT * FROM users_info WHERE user_username ='". mysqli_real_escape_string(CONNECTION_VAR, $username). "' AND user_password ='". mysqli_real_escape_string(CONNECTION_VAR, $password ). "' LIMIT 1";

CONNECTION_VAR - your connection id to the database
$row = mysqli_fetch_assoc($result);
因此,如果匹配(密码和用户名),则只会得到一行。您可以这样轻松地获取它:

 $query = "SELECT * FROM users_info WHERE user_username ='". mysqli_real_escape_string(CONNECTION_VAR, $username). "' AND user_password ='". mysqli_real_escape_string(CONNECTION_VAR, $password ). "' LIMIT 1";

CONNECTION_VAR - your connection id to the database
$row = mysqli_fetch_assoc($result);
因此,您可以使用
$row
中的数据

但请注意以下几点:

  • 接触基本php
  • 接触基本(我的)SQL知识
  • 加密/加密和散列密码。切勿在数据库中使用清除密码
  • 还要学习如何使用mysql类

    简单登录/注册系统:
    -但是请记住对密码进行哈希或盐析。在查询中使用数据之前,还要转义所有内容

    “不工作”是什么意思?您正在从数据库中选择所有用户,然后将它们全部分配到
    $db_username
    (因此循环后只剩下最后一个用户)…这一开始就很疯狂。使用
    其中user\u username=…
    从数据库中仅选择一个您真正感兴趣的用户!因为您查询所有用户
    从用户信息中选择*并循环浏览它们,因此,只有最后一个变量保存在变量
    $db_username
    $db_password
    中。在开始询问这些问题之前,您需要学习一些编程基础知识。您至少应该提供一个非SQL注入陈词滥调的解决方案1:d感谢各位的帮助@亚当:我在寻找你的答案。谢谢。同意,@xander,希望OP能够理解风险,并利用它来挖掘更安全的方法。我已经使用while循环从DBOk@yfain获取所有行。谢谢你的建议。