我对这个答案感到有点难过。
我有一个注册表单,如果在检查时表单输入有问题,我将一条消息保存到一个会话变量,然后检查该会话变量是否有任何内容,如果有,在我的页面顶部显示输出我致电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;
}
}
答案 0 :(得分:0)
我发现了问题所在。在我的页面上,我正在构建一个位于页面右上角的帐户栏,这个帐号错误使用相同的$_SESSION['msg']
作为顶部该栏中的登录表单,并且因为有一个在其中设置的消息,它回显出消息,然后取消设置,然后重新加载页面。