Показать полную графическую версию : Непонятки с сессиями
Странности наблюдаю:
в начале страницы пишу:
session_start();
print"PHPSESSID=".$PHPSESSID;
.....
В Опере 7.5, как и ожидалось сверху пишет идентификатор сессии, а вот в ИЕ 6 при первом обращении идентификатор пустой, но появлюется при обновлении страницы.
Как это понять?
vadimiron
15-07-2004, 02:46
Вообще Браузер получает уже готовую информацию от сервера, то есть PHP не связан с браузером
Но думаю здесь проблема в куки, так как по умолчанию сессия хранится в куке, и может в опере куки быстрей создаются, короче видимо механизм создания и управления куками в этих браузерах немного разный
vadimiron
Наверное. Я тож об этом подумал. Способ лечения так и не нашел, все настройки перерыл. Ну да ладно. В конце концов не критично.
За это отвечают две настройки в php.ini:
session.use_cookies - если равно 1, то PHP передает идентификатор в куках, если 0 - то нет.
session.use_trans_sid если равно 1, то PHP передает его, добавляя к URL и формам, если 0 - то нет.
Если включена только первая, то при старте сессии (при каждом вызове session_start()) клиенту устанавливается кука. Браузер исправно при каждом следующем запросе эту куку возвращает и PHP имеет идентификатор сессии. Проблемы начинаются, если браузер куки не возвращает. В этом случае, не получая куки с идентификатором, PHP будет все время стартовать новую сессию, и механизм работать не будет.
Если включена только вторая, то кука не выставляется. А происходит то, ради чего, в основном, собственно, и стоит использовать встроенный механизм сессий. После того, как скрипт выполняет свою работу, и страница полностью сформирована, PHP просматривает ее всю и дописывает к каждой ссылке и к каждой форме передачу идентификатора сессии. Это выглядит примерно так:
<a href="/index.php">Index</a> превращается в
<a href="/index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f">Index</a>
а к формам добавляется скрытое поле
<input type="hidden" name="PHPSESSID" value="00196c1c1a02e4c37ac04f921f4a5eec" />
И браузер при клике на любую ссылку, или при нажатии на кнопку в форме, пошлет в запросе нужную нам переменную - идентификатор сессии!
Теоретически, в наших с вами самодельных сессиях на куках и базе, можно самому, руками приписать ко всем ссылками передачу ид - и тогда наши собственные сессии будут работать независимо от кук. Но, согласитесь - приятнее, когда эту работу делает кто-то другой? :)
Исправлено: FADE, 13:14 21-10-2004
Prisoner
22-10-2004, 02:44
В тему ли?
Prisoner
[off]угу, это в ту тему где php делают под оперу или оперу под php, а не под стандарты
FADE
Желательно ссылки приводить на первоисточник, иначе складывается мнение, что вы хотите сойти за автора...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.