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

时间:2017-08-29 14:49:29

标签: php html

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

感谢。

我的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>

2 个答案:

答案 0 :(得分:1)

您必须在循环中使用条件。因为你所做的是错的。请联系更多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);

因此,您可以使用$row中的数据。

但请注意以下事项:

  1. 与基本的php取得联系
  2. 与基本(我的)SQL内容联系
  3. crypt / encrypt和哈希密码。绝不要在数据库中使用明确的密码
  4. 还要学习如何使用mysql类。

    简单登录/注册系统:http://codingcyber.com/simple-user-registration-script-in-php-and-mysql-84/   - 但请记住散列或腌制密码。在查询中使用数据之前也要避开everthing!

答案 1 :(得分:0)

您需要限制查询以仅提取尝试登录的用户信息。注意,这并不包括有关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>