取消设置PHP会话变量不会显示错误消息


Unsetting PHP session variable doesnt display error message

当用户名和密码不匹配时,我试图显示一条错误消息。如果用户名和密码不匹配,我会设置一个php会话变量。然后,我返回到同一页,如果设置了变量,则使用if conditioned php语句显示错误。但是,当我在错误显示后取消设置变量时,页面上没有显示错误。

我在这个论坛上看到过类似的问题。但我似乎做的每件事都像问题中建议的那样。。请帮帮我。。。

这是我的代码流的一部分。。。

<?php
ob_start();
session_start();
.
.
if ($result = $sth->fetch(PDO::FETCH_ASSOC)){
            $_SESSION['admin_user'] = $result['id'];
            header('Location: admin_user.php');
        } else {
            $_SESSION['user_found'] = 0;
            header('Location: index.php');
        }
.
.
//in html body
<?php
    if (isset($_SESSION['user_found'])){
        if($_SESSION['user_found'] == 0){
?>  
    <div>
    <p class = "bg-danger text-danger">Username Password Mismatch</p>
    </div>
<?php   
unset($_SESSION['user_found']);
        } 
    }
?>

现在,如果取消设置。。它运行良好。如果存在,则不会显示错误消息。

尝试不重新加载同一页面。。删除标头重定向。

if ($result = $sth->fetch(PDO::FETCH_ASSOC)){
            $_SESSION['admin_user'] = $result['id'];
            header('Location: admin_user.php');
        } else {
            $_SESSION['user_found'] = 0;
            //header('Location: index.php');
        }

当我尝试您的代码时,一切似乎都很好。你在这里没有提到的代码应该有问题。。

解决问题而不是

unset($_SESSION['user_found']);

尝试更改变量的值。。比如

$_SESSION['user_found'] = -1;