登录页面不会重定向会话活动

时间:2015-01-19 22:54:04

标签: php

我已经为一家公司在网站上做了一个登录页面,而且每一个似乎都没问题,直到我发现一个小问题,无论如何都很重要。会话启动一切正常,但如果会话已经启动,我无法从登录页面重定向。我的意思是如果我键入地址:

  

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

            }
?>

2 个答案:

答案 0 :(得分:3)

在使用$_SESSION之前,请先使用session_start()。所以它应该是这样的:

session_start();
if($_SESSION["loggedIn"])$passOK = true;

答案 1 :(得分:0)

你必须在第一行之后检查会话验证

if(!isset($_SESSION)){
  session_start();
}