Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Непонятки с сессиями (http://forum.oszone.net/showthread.php?t=30939)

pauluss 13-07-2004 12:23 212180

Странности наблюдаю:
в начале страницы пишу:
Код:

session_start();
print"PHPSESSID=".$PHPSESSID;
.....

В Опере 7.5, как и ожидалось сверху пишет идентификатор сессии, а вот в ИЕ 6 при первом обращении идентификатор пустой, но появлюется при обновлении страницы.

Как это понять?

vadimiron 15-07-2004 02:46 212181

Вообще Браузер получает уже готовую информацию от сервера, то есть PHP не связан с браузером
Но думаю здесь проблема в куки, так как по умолчанию сессия хранится в куке, и может в опере куки быстрей создаются, короче видимо механизм создания и управления куками в этих браузерах немного разный

pauluss 15-07-2004 09:16 212182

vadimiron
Наверное. Я тож об этом подумал. Способ лечения так и не нашел, все настройки перерыл. Ну да ладно. В конце концов не критично.

FADE 21-10-2004 13:10 212183

За это отвечают две настройки в 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" />
И браузер при клике на любую ссылку, или при нажатии на кнопку в форме, пошлет в запросе нужную нам переменную - идентификатор сессии!

Теоретически, в наших с вами самодельных сессиях на куках и базе, можно самому, руками приписать ко всем ссылками передачу ид - и тогда наши собственные сессии будут работать независимо от кук. Но, согласитесь - приятнее, когда эту работу делает кто-то другой? :)

[s]Исправлено: FADE, 13:14 21-10-2004[/s]

Prisoner 22-10-2004 02:44 212184

В тему ли?

FADE 22-10-2004 10:37 212185

Prisoner
[off]угу, это в ту тему где php делают под оперу или оперу под php, а не под стандарты

archy 23-10-2004 14:39 212186

FADE
Желательно ссылки приводить на первоисточник, иначе складывается мнение, что вы хотите сойти за автора...


Время: 18:56.

Время: 18:56.
© OSzone.net 2001-