开发者

Problem with PHP session in Xampp

At it's simplest, if file_1.php contains

<?php

  session_start(); 

  $_SESSION["test_message"] = "Hello, world";

  header("Location: http://localhost/file_2.php");
?>

and file_2.php con开发者_运维百科tains

<!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>

the result is Test message is not set and a var_dump($_SESSION) returns null - locally, with Xampp. However, if I upload those same files to a paid-for hosted web site, it works and I see

Hello, world
array
  'test_message' => string 'Hello, world' (length=12)

When I look at PHPinfo under Xampp it shows Session Support enabled. What am I doing wrong?


You've forgotten the session_start at the top of file_2.php

So it should be:

<?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() should be at the top of every file where you need to access the session functions.

EDIT:

You should really use session_write_close before redirecting to another page.

first file:

<?php
session_start(); 

$_SESSION["test_message"] = "Hello, world";

session_write_close(); 
header("Location: http://localhost/file_2.php");
?>


Session issue can be fixed in Xampp 7.1.6 do the following change in php.ini Line #1403

session.auto_start = 1
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜