【问题标题】:Why is my else condition being executed twice?为什么我的 else 条件被执行了两次?
【发布时间】:2020-06-06 05:23:03
【问题描述】:

我通过这个多用户登录系统。它工作正常,因为它不允许我的 status_id 用户“2”登录(非活动状态),但是当这种情况发生时,我会在屏幕上两次收到回显消息。

我做错了什么? 我想验证用户/密码、user_type (admin/user) 和 user_status (1-active, 2-inactive)。

<?php

include 'database/connect.php';

if (isset($_POST["submit"])) {
    $email = $_POST["txtemail"];
    $pass = $_POST["txtpass"];

    $query = mysqli_query($con, "SELECT user_email,user_password,user_type_id, status_id FROM user");
    while ($row = mysqli_fetch_array($query)) {
        $db_email = $row["user_email"];
        $db_pass = $row["user_password"];
        $db_type = $row["user_type_id"];
        $db_user_status = $row['status_id'];

        if ($email == $db_email && $pass == $db_pass && $db_user_status == '1') {
            session_start();
            $_SESSION["email"] = $db_email;
            $_SESSION["type"] = $db_type;

            if ($_SESSION["type"] == '1') {
                header("Location:admin/home_admin.php");
            } else {
                header("Location:user/home_user.php");
            }
        } else {
            echo "Ups. Algo de errado aconteceu.";
        }
    }
}

【问题讨论】:

标签: php if-statement authentication


【解决方案1】:

查看您的代码,如果循环内指定的条件失败,则 else 将执行。

因此,如果您的用户表包含 3 条记录,并且所有 3 条记录都不满足指定的条件,它将执行 else 语句并执行 3 次。

这可能是原因。

【讨论】:

    【解决方案2】:

    看起来您正在遍历用户表中的每个用户,因此发布的电子邮件和密码只能对一个用户正确,而对于其余用户,您的程序将通过 else 语句

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2020-02-23
      • 2013-01-27
      • 2015-07-18
      • 1970-01-01
      相关资源
      最近更新 更多