重定向后,会话无法正常工作

时间:2017-04-07 12:10:22

标签: php session session-variables

以下是我在user-authentication.php中设置会话的代码:

session_start();
$_SESSION['admin_name'] = $name;
$_SESSION['sbc_admin'] = "y";
$_SESSION['admin_email'] = $email;

header("Location:includes/user-auth.php");

以及检查会话是否已设置的代码或user-auth.php

session_start();
    if (isset($_SESSION["sbc_admin"])) {
        $admin = $_SESSION["sbc_admin"];
        $name = $_SESSION["admin_name"];
        $email = $_SESSION["admin_email"];
    } else {
        header("Location:../index.php");
}

重定向后,会话变量丢失。我尝试了一些技巧,但它仍无法正常工作。

3 个答案:

答案 0 :(得分:0)

session_start();并放在所有代码的顶部。你基本上希望它是第一个运行的方法之一,如果不是。

我倾向于创建一个名为lib.php的文件,该文件被调用到Header.php文档中。这个lib文件包含所有对象创建,某些函数等。页面上的第一个代码是:

<?php
session_start();
//the rest of the code here

答案 1 :(得分:0)

You should start the session on all your php files like below code, else you can start session on common file (which file included on all files)

test1.php
<?php
session_start();
$_SESSION['admin_name'] = 'test';
$_SESSION['sbc_admin'] = "y";
$_SESSION['admin_email'] = 'test1';

header("Location:test2.php");
?>

test2.php
<?php
session_start();
print_r($_SESSION);
exit();
?>

答案 2 :(得分:0)

不是在所有页面上使用“session_start()”,而是应该有一个包含在所有php页面上的PHP文件。就像标题或配置文件一样。

您需要检查会话是否已启动,如果没有,则需要启动会话。 您可以从这个答案中获得灵感,看看如何在5.4之前和之后出现的PHP版本中检查和启动会话:https://stackoverflow.com/a/18542272/1564840