Я пытаюсь использовать переменные сеанса на нескольких страницах. Однако переменные исчезают, когда я перехожу с исходной страницы, на которой они установлены, на другую страницу моего сервера. Я подтвердил, что переменные изначально установлены на первой странице, но когда я пытаюсь получить доступ к ним на следующей странице, они не имеют значения. Если я получаю доступ к session_id()
, он отличается от того, который я установил на первой странице.
Вот упрощенная версия того, что я пытаюсь сделать:
(Первая страница, где установлены переменные сеанса)
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
session_start();
$_SESSION['id'] = session_id();
header('Location: pagetwo.php');
die();
?>
(Вторая страница, где я пытаюсь получить доступ к переменным сеанса)
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
session_start();
echo "SESSION[id] = ".$_SESSION['id']."<br>";
?>
$_SESSION['id']
возвращает пустое значение, и у меня выводится сообщение об ошибке:
Примечание: неопределенный индекс: id в C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs \ pagetwo.php в строке 5
Теперь здесь все становится немного странно. Это не происходит во всех браузерах (только IE8 и Firefox 3). Я могу получить доступ к переменным сеанса в Chrome 15 и Firefox 7. Кроме того, у меня есть два разных сервера под управлением Apache и PHP. Сервер, на котором у меня возникают эти проблемы, работает под управлением PHP 5.2.17, однако на моем другом сервере под управлением PHP 5.2.9 я могу получить доступ к переменным сеанса на всех страницах во всех типах браузеров.
Может показаться, что файлы PHP.ini будут разными на двух серверах, однако настройки сеансов у них идентичны.
Я не уверен, что кто-то еще сталкивался с подобной проблемой, когда IE8 не мог получить доступ к переменным сеанса в PHP 5.2.17, но я искал формы в течение последних двух дней и не мог найти ничего подобного. Я надеюсь, что просто упускаю что-то очень простое, и кто-то может указать мне правильное направление.