Проблема с сессией PHP в Xampp - PullRequest
2 голосов
/ 13 июля 2010

Проще всего, если 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)

Когда я смотрю на PHPinfo под Xampp, он показывает Session Support enabled. Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 13 июля 2010

Вы забыли сеанс_запуска в верхней части file_2.php

Так и должно быть:

<?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() должен быть в начале каждого файла, где вам нужен доступ к функциям сеанса.

EDIT:

Вы действительно должны использовать session_write_close перед перенаправлением на другую страницу.

первый файл:

<?php
session_start(); 

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

session_write_close(); 
header("Location: http://localhost/file_2.php");
?>
1 голос
/ 06 июля 2017

Проблема с сессией может быть исправлена ​​в Xampp 7.1.6. Сделайте следующее изменение в php.ini Строка # 1403

session.auto_start = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...