|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.02.2009, 15:30 | #1 |
Пользователь
Регистрация: 21.02.2009
Сообщений: 44
|
Как работает механизм сессий?
Насколько я понял, последние версии рнр устроены так, что если в броузере посетителя включены куки, то идентификатор сессии передается через них. А если куки запрещены, то рнр сам автоматически дописывает в УРЛ каждой ссылки нечто вроде ?PHPSESSID=ac4f4a45bdc893434c95dcaf fb1c1811
Так в теории. Но на практике происходит нечто другое: если куки включены, то механизм сессии работает, а если куки отключены, то механизм сессии не действует. По крайней мере, у меня на ВДС наблюдается именно такая ситуация. И если не делать никаких ухищрений, то с выключенными куки сессия не передается. Хотя, теоретически, должна передаваться. Без дополнительных мер. Понимая, что мои знания рнр весьма ограничены и настройка рнр на моем ВДС может быть не идеальна, я разместил тестовые файлы на стандартном хостинге, настроенном профессионалами. На одном файле стоит код <?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 Как можно это прокомментировать? |
21.02.2009, 18:56 | #2 |
Пользователь
Регистрация: 13.12.2008
Сообщений: 28
|
Сессии передаются в куках если в файле php.ini значение session.use_cookies равно 1, а если 0 - то не передаётся.
А если значение session.use_trans_sid в том же файле php.ini равно 1 то идентификатор сессии передаётся путём добавления его к URL адресу и формам. А если 0 - не передает. То есть как и в теории url будет иметь вид: <a href="/index.php?PHPSESSID=7gsd4g53ghye783 "> а к формам добавляется новое скрытое поле (элемент hidden): <input type="hidden" name="PHPSESSID" value="7gsd4g53ghye783"> Тогда возможно что в вашем php.ini значение session.use_trans_sid на нуле. Последний раз редактировалось Rus 47; 21.02.2009 в 18:59. |
21.02.2009, 19:43 | #3 |
Пользователь
Регистрация: 21.02.2009
Сообщений: 44
|
А Вы лично видели, чтобы так реально передавались сессии?
Если я пришлю Вам эти два тестовых файла, Вы можете попробовать их у себя? |
21.02.2009, 19:53 | #4 |
Пользователь
Регистрация: 13.12.2008
Сообщений: 28
|
Присылйте, посмотрю.
А вообще я уже проверил, и не один раз, создавал два файла: На одном файле стоит код <?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(); ?> В зависимости от включенных\отключенных куки и настроек файла php.ini всё происходило так как я описал. |
21.02.2009, 20:07 | #5 |
Пользователь
Регистрация: 21.02.2009
Сообщений: 44
|
Эти файлы я и предполагал послать. Но раз Вы эти коды уже попробовали, то посылать файлы не за чем.
А не могли бы Вы дать ссылочку на их адреса, где они фоункционируют? И запись в php.ini, которая обеспечивает передачу сессии без куки. Я покажу это своей техподдержке, которая утверждает, что сие невозможно. Пусть увидят своими глазами... |
21.02.2009, 20:19 | #6 |
Пользователь
Регистрация: 13.12.2008
Сообщений: 28
|
Показать не могу, так как проверял на локальном сервере.
А запись в файле php.ini имеет такой вид: session.use_cookies = 0 session.use_trans_sid = 1 Именно с такими значениями обеспечивается передача без использования куки. А вообще для передачи сессийиспользуется глобальный массив $_SESSION['имя'] тоесть идентификатор сессий можно передать следующим образом: $_SESSION['id'] = session_id(); но если оба значения : session.use_cookies и session.use_trans_sid будут равны нулю то ничего передаваться не будет. |
21.02.2009, 20:42 | #7 |
Пользователь
Регистрация: 21.02.2009
Сообщений: 44
|
А в сети разместить не можете?
Хотя бы на полчаса? |
21.02.2009, 21:25 | #8 |
Пользователь
Регистрация: 13.12.2008
Сообщений: 28
|
К сожалению не могу, могу залить куда нибудь те две страницы и свой файл php.ini если хотите
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как работает процессор? | Иллидан | Компьютерное железо | 13 | 17.07.2011 14:04 |
Как работает Include | ToxaRUS | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 20.01.2009 16:04 |
составил программу ,но ненравиться механизм работы.помогите улучшить | Василийпрог | Помощь студентам | 1 | 23.11.2008 11:38 |
Как работает win rar? | Altera | Свободное общение | 2 | 30.03.2008 08:05 |