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

时间:2015-03-07 07:27:02

标签: php session unset

我正在尝试在用户名 - 密码不匹配时显示错误消息。如果用户名和密码不匹配,我设置一个php会话变量。然后我回到同一页面,使用if条件的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']);
        } 
    }

?>

现在,如果未设置被删除..它工作正常。如果存在,则不显示错误消息。

2 个答案:

答案 0 :(得分:0)

当我尝试使用您的代码时,事情似乎正常。你在这里没有提到的代码应该有问题。

要解决问题,而不是

unset($_SESSION['user_found']);

尝试更改变量的值..说

$_SESSION['user_found'] = -1;

答案 1 :(得分:0)

尝试不重新加载相同的页面..删除标题重定向。

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');
        }