Xampp中的PHP会话问题

时间:2010-07-13 08:54:31

标签: php session xampp

最简单,如果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。我做错了什么?

2 个答案:

答案 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