以下是我在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");
}
重定向后,会话变量丢失。我尝试了一些技巧,但它仍无法正常工作。
答案 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