如果尚未设置会话变量,则无法设置$ _SESSION变量

时间:2015-02-05 13:51:11

标签: php session-variables

我对这个答案感到有点难过。

我有一个注册表单,如果在检查时表单输入有问题,我将一条消息保存到一个会话变量,然后检查该会话变量是否有任何内容,如果有,在我的页面顶部显示输出我致电session_start();,在设置消息时,我使用类似$_SESSION['msg'] = "Fill out all the information";

的内容

我遇到的问题是,这只有在用户登录时才会有效(IE会话已经启动),当没有会话时,$ _SESSION ['msg']变量无法获取集。

要检查错误消息,请使用此代码。

        if(isset($_SESSION['msg'])){
            echo $_SESSION['msg'];
            unset($_SESSION['msg']);
        }

正如您可以通过页面顶部的代码看到的那样,它们之间几乎没有。但是有一个检查是为了查看用户是否有一个有效的会话,但所有这一切都是返回true或false取决于它如何评估,我检查它,它似乎没有导致问题,因为我把它拿出来,这个问题仍然存在。

有人能解释一下这个问题吗?

session_start();
include_once("".$_SERVER['DOCUMENT_ROOT']."/includes/Krumo/class.krumo.php");
include_once("".$_SERVER['DOCUMENT_ROOT']."/auth/class_loader.php");
    $sessCheck = new userFunc;
    if($sessCheck->validSess('bool')){
        $sess = true;
    }
    else{ $sess = false;}


if(isset($_POST['email'])){
    if($_POST['email'] != NULL && $_POST['username'] != NULL && $_POST['pass'] != NULL && $_POST['rpass'] != NULL){
        $e = preg_replace('#[^a-z0-9_@.-]#i', '', $_POST['email']);
        if (!filter_var($e, FILTER_VALIDATE_EMAIL)) {
            $_SESSION['msg'] = "Please enter a valid email";
            return false;
        }
        else{

            $check = new userFunc;
            if($check->userExists($_POST['email'],$_POST['username'])){
                $_SESSION['msg'] = "An account with that email or username already exists";
                return false;
            }
            else
            {
                if(!$check->pswdMatch($_POST['pass'],$_POST['rpass'])){
                    $_SESSION['msg'] = "Passwords do not match";
                    return false;
                }
                $register = new register;
                $user = $register->startReg($_POST['username'],$_POST['email'],$_POST['pass']);
            }
        }
    }else
    {
        $_SESSION['msg'] = "Fill out all the information";
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。在我的页面上,我正在构建一个位于页面右上角的帐户栏,这个帐号错误使用相同的$_SESSION['msg']作为顶部该栏中的登录表单,并且因为有一个在其中设置的消息,它回显出消息,然后取消设置,然后重新加载页面。