最简单,如果file_1.php包含
<?php
session_start();
$_SESSION["test_message"] = "Hello, world";
header("Location: http://localhost/file_2.php");
?>
和file_2.php包含
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body>
<?php
if (!(isset($_SESSION["test_message"])))
echo "Test message is not set";
else
echo $_SESSION["test_message"];
var_dump($_SESSION);
session_destroy();
?>
</body>
</html>
结果为Test message is not set
,var_dump($ _ SESSION)返回null
- locally, with Xampp
。但是,如果我将这些相同的文件上传到付费托管网站,它可以正常工作,我会看到
Hello, world
array
'test_message' => string 'Hello, world' (length=12)
当我在Xampp下查看PHPinfo时,它会显示Session Support enabled
。我做错了什么?
答案 0 :(得分:3)
您忘记了file_2.php
顶部的session_start所以它应该是:
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body>
<?php
if (!(isset($_SESSION["test_message"])))
echo "Test message is not set";
else
echo $_SESSION["test_message"];
var_dump($_SESSION);
session_destroy();
?>
</body>
</html>
session_start()
应位于您需要访问会话功能的每个文件的顶部。
编辑:
在重定向到另一个页面之前,你应该使用session_write_close。
第一个文件:
<?php
session_start();
$_SESSION["test_message"] = "Hello, world";
session_write_close();
header("Location: http://localhost/file_2.php");
?>
答案 1 :(得分:1)
会话问题可以在Xampp 7.1.6中修复。在php.ini中进行以下更改 #1403行
session.auto_start = 1