|
|
|
| Насколько я понял, последние версии рнр устроены так, что если в броузере посетителя включены куки, то идентификатор сессии передается через них. А если куки запрещены, то рнр сам автоматически дописывает в УРЛ каждой ссылки нечто вроде ?PHPSESSID=ac4f4a45bdc893434c95dcaffb1c1811
Так в теории.
Но на практике происходит нечто другое: если куки включены, то механизм сессии работает, а если куки отключены, то механизм сессии не действует. По крайней мере, у меня на ВДС наблюдается именно такая ситуация. И если не делать никаких ухищрений, то с выключенными куки сессия не передается. Хотя, теоретически, должна передаваться. Без дополнительных мер.
Понимая, что мои знания рнр весьма ограничены и настройка рнр на моем ВДС может быть не идеальна, я разместил тестовые файлы на стандартном хостинге, настроенном профессионалами.
На одном файле стоит код
<?php
session_start();
echo session_id();
?>
<p style="text-indent: 1px; margin-left: 25px; margin-top: 0; margin-bottom: 0">
<font face="Arial"><b><a href="889.php">Переход на 889</a></b></font></p>
|
А в другом файле
<?php
session_start();
echo session_id();
?>
|
И здесь весьма наглядно проступает та же ситуация:
- если в броузере куки разрешены, сессия переходит с одного файла на другой;
- если в броузере куки запрещены, то сессия не переходит и во вновь открытом файле формируется новый идентификатор сессии.
Вот взгляните сами:
http://vova.1gb.ru/888.php
Как можно это прокомментировать? | |
|
|
|
|
 456 байт |
|
|
для: Владимир55
(21.02.2009 в 10:56)
| | Чисто из любопытства я поместил упомянутые тестовые файлы в Приложение.
Интересно, если Вы запустите их на своем хостинге, то что получится?
Произойдет ли переход сессии на второй файл при использовании броузера с отключенными куки? | |
|
|
|
|
|
|
|
для: Владимир55
(21.02.2009 в 12:39)
| | Может, кто-нибудь хоть на час разместит у себя те два файла, что в Приложении, и даст на них ссылочку?
Очень уж хочется увидеть своими глазами правильную работу сессий! | |
|
|
|
|
|
|
|
для: Владимир55
(21.02.2009 в 10:56)
| | > И если не делать никаких ухищрений, то с выключенными куки сессия не передается.
Передаётся. В адресной строке видите "...889.php?PHPSESSID=..."? | |
|
|
|
|
|
|
|
для: BinLaden
(22.02.2009 в 10:45)
| | Вероятно, Вы смотрели в тот момент, когда я делал какие-то манипуляции с кодом.
Сейчас код в полном соответствии с тем, как я его написал выше.
И сессий нет. | |
|
|
|
|
|
|
|
для: Владимир55
(22.02.2009 в 10:59)
| |
<?php
echo 'session.use_only_cookies is "' . ini_get('session.use_only_cookies') . '"';
?>
|
Что показывает данный код? | |
|
|
|
|
|
|
|
для: BinLaden
(22.02.2009 в 11:12)
| | session.use_only_cookies is "0"
И что это? | |
|
|
|
|
|
|
|
для: Владимир55
(22.02.2009 в 11:21)
| | Передавать идентификатор только через cookie. В общем-то этот параметр у Вас отключен.
Посмотрите аналогично параметр "session.use_trans_sid ":
<?php
echo 'session.use_trans_sid is "' . ini_get('session.use_trans_sid') . '"';
?>
|
Насколько я знаю именно он отвечает за автоматическое добавление идентификатора сессии к ссылкам.
P.S. Лучше, IMHO, самому добавлять идентификатор, пропустив каждую ссылку через свою функцию. | |
|
|
|
|
|
|
|
для: BinLaden
(22.02.2009 в 11:40)
| | Выводит session.use_trans_sid is "0"
"P.S. Лучше, IMHO, самому добавлять идентификатор, пропустив каждую ссылку через свою функцию."
Постепенно и я приближаюсь к этой мысли. Но переделать предстоит почти 80.000 страниц, поэтому очень хотелось прежде убедиться в рациональности такой переделки.
Скажите, а чем это лучше? | |
|
|
|
|
|
|
|
для: Владимир55
(22.02.2009 в 11:52)
| | > Выводит session.use_trans_sid is "0"
Попробуйте
<?php
ini_set('session.use_trans_sid', 1);
?>
|
> Скажите, а чем это лучше?
Хотя бы тем, что мы избавляемся от этого сомнительного автоматического способа. Я не доверяю use_trans_sid.
> Но переделать предстоит почти 80.000 страниц
Каждая страница свой файл на диске имеет что ли? Вам, по-моему, переделать надо гораздо больше. | |
|
|
|
|
|
|
|
для: BinLaden
(22.02.2009 в 12:09)
| | Я как раз это и сделал в то время, пока Вы писали ответ. Сейчас в коде записано вот что:
ini_set("session.use_trans_sid", true);
session_start();
echo"<br>", session_id(), "<br>";
echo 'session.use_trans_sid is "' . ini_get('session.use_trans_sid') . '"', "<br>";
echo 'session.use_only_cookies is "' . ini_get('session.use_only_cookies') . '"';
|
С выключенными куки работает именно так, как и ожидалось - сессия передается через УРЛ.
Но попробуйте не кликать, а перенести в броузер мышкой вот этот адрес http://vova.1gb.ru/888.php , и Вы увидите, что при ВКЛЮЧЕННЫХ куки сессия всё равно передается через УРЛ!
Как это можно объяснить? | |
|
|
|
|
|
|
|
для: Владимир55
(22.02.2009 в 12:19)
| | > Вы увидите, что при ВКЛЮЧЕННЫХ куки сессия всё равно передается через УРЛ!
Нет, я этого не вижу. Такое возможно увидеть лишь в самый первый раз при заходе на страницу, когда в браузере cookie не установлена и сервер еще не знает поддерживает ли клиент cookies. | |
|
|
|
|
|
|
|
для: BinLaden
(22.02.2009 в 12:28)
| | > Но переделать предстоит почти 80.000 страниц
Каждая страница свой файл на диске имеет что ли?
Да, каждая страница имеет свой файл. А как ещё их можно выполнить? | |
|
|
|