Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Время от времени сбрасываются сессии - как от этого избавиться?
 
 автор: parczynski   (09.07.2007 в 00:31)   письмо автору
 
 

Здравствуйте.
Вообщем проблема в следующем:
У меня интернет магазин на php. Для авторизации и хранения товаров в корзине я пользуюсь сессиями. Обычно все равботает нормально, но время от времени все переменные сессии сбрасываются. сами. без вызова unset или session_destroy(). Подскажите, пжл, из-за чего такое может быть? может дело в хостинге или в настройках интерпритатора?
сайт на Apache 2.0 + PHP Version 4.4.7 для открытия сессии пользуюсь session_start(), переменные храню в масиве $_SESSION.
заранее спасибо.

   
 
 автор: Faraon   (09.07.2007 в 08:59)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:31)
 

Если вы не совершаете ни каких действий на сайте в течении 24 мин то браузер считает что вы ушли с сайта и сессии сбрасываются автоматически

   
 
 автор: CrazyAngel   (09.07.2007 в 09:10)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:31)
 

время жизни сессии в настройках сервера побольше поставить

   
 
 автор: parczynski   (09.07.2007 в 12:22)   письмо автору
 
   для: CrazyAngel   (09.07.2007 в 09:10)
 

дело точно не во времени. Иногда все работает до конца нормально, а иногда переменные пропадают за ~30 секунд. то есть человек заходит на сайт авторизуется. в сессии записывается его ID, затем ему отображается информация о нем, он тут же переходит на другую страницу, а в сессии уже ничего нет. тоже самое и с корзиной

   
 
 автор: Yuriev   (09.07.2007 в 12:54)   письмо автору
 
   для: parczynski   (09.07.2007 в 12:22)
 

А на других страницах session_start() есть?

   
 
 автор: parczynski   (09.07.2007 в 13:02)   письмо автору
 
   для: Yuriev   (09.07.2007 в 12:54)
 

Да. Ко всем скриптам инклудится файл в котором есть session_start(). переменные могут проподать на той странице, на которой только что все работало нормально.

   
 
 автор: Proger   (09.07.2007 в 13:42)   письмо автору
 
   для: parczynski   (09.07.2007 в 13:02)
 

А индификатор сессии в куках храниться? Или передаёться гет запросом каждый раз при обращении к скриптам?

   
 
 автор: parczynski   (09.07.2007 в 14:09)   письмо автору
 
   для: Proger   (09.07.2007 в 13:42)
 

идентификатор в куках

   
 
 автор: parczynski   (10.07.2007 в 16:27)   письмо автору
 
   для: parczynski   (09.07.2007 в 14:09)
 

люди, что делать то?

   
 
 автор: cheops   (11.07.2007 в 11:00)   письмо автору
 
   для: parczynski   (09.07.2007 в 12:22)
 

Такое бывает, если вы переключаетесь с URL http://site.ru на http://www.site.ru или наоборот. Дело в том, что SID сессии передаётся через cookie.

   
 
 автор: parczynski   (10.07.2007 в 19:39)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:31)
 

А может это быть из-за браузера??? когда появлялась ошибка я юзал сайт через Opera 9.20. Сейчас попробовал на Mozilla Firefox 1.5.0.6: пока еще не разу не сбросились переменные.

   
 
 автор: Shorr Kan   (10.07.2007 в 19:47)   письмо автору
 
   для: parczynski   (10.07.2007 в 19:39)
 

Поскольку идентификатор в куках, то происходит такое (скорее всего) из-за пропажи этих самых куков. То есть, это именно из-за браузера.

   
 
 автор: parczynski   (10.07.2007 в 19:55)   письмо автору
 
   для: Shorr Kan   (10.07.2007 в 19:47)
 

то есть все что я могу сделать - добавить на сайт надпись сайт заточен под Mozilla Firefox??? ... и умереть со стыда :(

   
 
 автор: bronenos   (10.07.2007 в 19:57)   письмо автору
 
   для: parczynski   (10.07.2007 в 19:55)
 

или поднастроить php.ini через .htaccess

   
 
 автор: Shorr Kan   (10.07.2007 в 20:35)   письмо автору
 
   для: parczynski   (10.07.2007 в 19:55)
 

Проблема именно в вашем браузере. Например у меня может ваш сайт работать во всех браузерах, а вот у вас опера настроена так, что режет куки при определенных условиях. Потому вам нужно поднастроить сервер таким образом, чтобы идентификатор мог передаваться не только в куках, но и в урл. То есть, предпочитать сервер будет использовать куки. Но если не сможет - тогда будет использовать get-передачу. Либо вообще всегда используйте урл - тогда о куках (и соответствующих проблемах) забудете.

Хочу заметить, что здесь (на софттайме) у меня гибнут куки в konqueror . Хотя в опере и мозилле - все отлично. Так что вот так :)

   
 
 автор: parczynski   (11.07.2007 в 00:00)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:31)
 

Использовать и куки и урл - это конечно хорошо, но на сколько я знаю сервер выбирает что он будет использовать когда пользователь загружает вторую страницу. то есть когда пользователь заходит на сайт ему и в куки и к гиперссылкам подписывается PHPSESSID, когда он заходит на следующую страницу если сервер получает ID через куки то использует только куки и потом уже ничего не проверяет. Но как я уже сказал ошибка эта присходит не всегода, то есть иногда и в опере все нормально работает. и как правило в первый раз все точно работает нормально. то есть сервер все равно будет определять передачу идентификатора сессии через куки. или не так???

   
 
 автор: inga   (11.07.2007 в 13:44)   письмо автору
 
   для: parczynski   (11.07.2007 в 00:00)
 

подскажи, пожалуйста, как ти передаешь идентификатор в куках

   
 
 автор: inga   (11.07.2007 в 13:51)   письмо автору
 
   для: inga   (11.07.2007 в 13:44)
 

ну почемуже переменные сесий не передаются, вернее очень редко передаются? я насколько понимаю, они без кук должны передаваться по свем страничкам если открытие сессии прописано в head

   
 
 автор: parczynski   (11.07.2007 в 14:02)   письмо автору
 
   для: parczynski   (11.07.2007 в 00:00)
 

В куках не передаются переменные сессии. В куках передается идентификатор сессии. Переменные хранятся в файле, который соответствует этому идентификатору. Видимо Опера иногда режит идентификатор, просто глюк оперы. В mozille и IExplorer'e у меня все нормально работает. вроде.

   
 
 автор: inga   (11.07.2007 в 14:32)   письмо автору
 
   для: parczynski   (11.07.2007 в 14:02)
 

подскажи, пожалуйста, как ти передаешь идентификатор в куках? пример

   
 
 автор: parczynski   (11.07.2007 в 14:46)   письмо автору
 
   для: inga   (11.07.2007 в 14:32)
 

В скрипте я начинаю сессию через session_start(); Переменные храню в $_SESSION.
То есть:

session_start();
$_SESSION['user']='administrator';

и все.
В куках идентификатор PHPSESSID прописывается автоматически так как в php.ini прописано

session.use_cookies = 1

   
 
 автор: inga   (11.07.2007 в 15:02)   письмо автору
 
   для: parczynski   (11.07.2007 в 14:46)
 

тогда почему у меня не работает, я все так же делаю, пользуюсь Internet Explorer?

   
 
 автор: parczynski   (11.07.2007 в 17:26)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:31)
 

Может и в IExplorer'e не работает. просто у меня пока ни разу не глюколо с ним (6-я версия) и с мазиллой.

   
 
 автор: parczynski   (12.07.2007 в 01:03)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:31)
 

да, кажется в експлорере тоже не работает. По поводу способа обращения, о котором писал cheops, когда я захожу на свой сайт у меня в куках прописывается 2 PHPSESSID. одно для www.site.ru, другое для site.ru, причем идентификаторы разные!!! хотя на сайте все ссылки site.ru. Что с этим делать???

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования