我已经为一家公司在网站上做了一个登录页面,而且每一个似乎都没问题,直到我发现一个小问题,无论如何都很重要。会话启动一切正常,但如果会话已经启动,我无法从登录页面重定向。我的意思是如果我键入地址:
MYDOMAIN / MyFolder文件/ login.php中
它停留在那里并且无法重定向到主页面,因为它看起来会话数据不可用于此页面。以下是我使用的代码:
<?php
$usuarios = simplexml_load_file('__usuarios__mensajes.xml');
$goLogin = false;
$nameOK = false;
$passOK = false;
$messagesPage = "index.php";
if($_SESSION["loggedIn"])$passOK = true;
if((isset($_POST["MM_insert"]) && $_POST["MM_insert"] == "form1")){
$nombre = $_POST["user"];
$password = $_POST["password"];
foreach($usuarios->usuario as $usuario){
$attr = $usuario->attributes();
if($nombre == $attr["nombre"]){
$nameOK = true;
if($password == $attr["password"]){
$goLogin = true;
$passOK = true;
$displayName = (string)$attr["displayName"];
}
break;
}
}
}
if($passOK){
session_start();
$_SESSION["usuario"]= $_POST["user"];
$_SESSION["loggedIn"] = true;
$_SESSION["userDisplayName"]= $displayName;
header(sprintf("Location: %s", $messagesPage));
}
?>
答案 0 :(得分:3)
在使用$_SESSION
之前,请先使用session_start()
。所以它应该是这样的:
session_start();
if($_SESSION["loggedIn"])$passOK = true;
答案 1 :(得分:0)
你必须在第一行之后检查会话验证
if(!isset($_SESSION)){
session_start();
}