|
|
|
| Здравствуйте.
Вообщем проблема в следующем:
У меня интернет магазин на php. Для авторизации и хранения товаров в корзине я пользуюсь сессиями. Обычно все равботает нормально, но время от времени все переменные сессии сбрасываются. сами. без вызова unset или session_destroy(). Подскажите, пжл, из-за чего такое может быть? может дело в хостинге или в настройках интерпритатора?
сайт на Apache 2.0 + PHP Version 4.4.7 для открытия сессии пользуюсь session_start(), переменные храню в масиве $_SESSION.
заранее спасибо. | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 00:31)
| | Если вы не совершаете ни каких действий на сайте в течении 24 мин то браузер считает что вы ушли с сайта и сессии сбрасываются автоматически | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 00:31)
| | время жизни сессии в настройках сервера побольше поставить | |
|
|
|
|
|
|
|
для: CrazyAngel
(09.07.2007 в 09:10)
| | дело точно не во времени. Иногда все работает до конца нормально, а иногда переменные пропадают за ~30 секунд. то есть человек заходит на сайт авторизуется. в сессии записывается его ID, затем ему отображается информация о нем, он тут же переходит на другую страницу, а в сессии уже ничего нет. тоже самое и с корзиной | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 12:22)
| | А на других страницах session_start() есть? | |
|
|
|
|
|
|
|
для: Yuriev
(09.07.2007 в 12:54)
| | Да. Ко всем скриптам инклудится файл в котором есть session_start(). переменные могут проподать на той странице, на которой только что все работало нормально. | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 13:02)
| | А индификатор сессии в куках храниться? Или передаёться гет запросом каждый раз при обращении к скриптам? | |
|
|
|
|
|
|
|
для: Proger
(09.07.2007 в 13:42)
| | идентификатор в куках | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 14:09)
| | люди, что делать то? | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 12:22)
| | Такое бывает, если вы переключаетесь с URL http://site.ru на http://www.site.ru или наоборот. Дело в том, что SID сессии передаётся через cookie. | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 00:31)
| | А может это быть из-за браузера??? когда появлялась ошибка я юзал сайт через Opera 9.20. Сейчас попробовал на Mozilla Firefox 1.5.0.6: пока еще не разу не сбросились переменные. | |
|
|
|
|
|
|
|
для: parczynski
(10.07.2007 в 19:39)
| | Поскольку идентификатор в куках, то происходит такое (скорее всего) из-за пропажи этих самых куков. То есть, это именно из-за браузера. | |
|
|
|
|
|
|
|
для: Shorr Kan
(10.07.2007 в 19:47)
| | то есть все что я могу сделать - добавить на сайт надпись сайт заточен под Mozilla Firefox??? ... и умереть со стыда :( | |
|
|
|
|
|
|
|
для: parczynski
(10.07.2007 в 19:55)
| | или поднастроить php.ini через .htaccess | |
|
|
|
|
|
|
|
для: parczynski
(10.07.2007 в 19:55)
| | Проблема именно в вашем браузере. Например у меня может ваш сайт работать во всех браузерах, а вот у вас опера настроена так, что режет куки при определенных условиях. Потому вам нужно поднастроить сервер таким образом, чтобы идентификатор мог передаваться не только в куках, но и в урл. То есть, предпочитать сервер будет использовать куки. Но если не сможет - тогда будет использовать get-передачу. Либо вообще всегда используйте урл - тогда о куках (и соответствующих проблемах) забудете.
Хочу заметить, что здесь (на софттайме) у меня гибнут куки в konqueror . Хотя в опере и мозилле - все отлично. Так что вот так :) | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 00:31)
| | Использовать и куки и урл - это конечно хорошо, но на сколько я знаю сервер выбирает что он будет использовать когда пользователь загружает вторую страницу. то есть когда пользователь заходит на сайт ему и в куки и к гиперссылкам подписывается PHPSESSID, когда он заходит на следующую страницу если сервер получает ID через куки то использует только куки и потом уже ничего не проверяет. Но как я уже сказал ошибка эта присходит не всегода, то есть иногда и в опере все нормально работает. и как правило в первый раз все точно работает нормально. то есть сервер все равно будет определять передачу идентификатора сессии через куки. или не так??? | |
|
|
|
|
|
|
|
для: parczynski
(11.07.2007 в 00:00)
| | подскажи, пожалуйста, как ти передаешь идентификатор в куках | |
|
|
|
|
|
|
|
для: inga
(11.07.2007 в 13:44)
| | ну почемуже переменные сесий не передаются, вернее очень редко передаются? я насколько понимаю, они без кук должны передаваться по свем страничкам если открытие сессии прописано в head | |
|
|
|
|
|
|
|
для: parczynski
(11.07.2007 в 00:00)
| | В куках не передаются переменные сессии. В куках передается идентификатор сессии. Переменные хранятся в файле, который соответствует этому идентификатору. Видимо Опера иногда режит идентификатор, просто глюк оперы. В mozille и IExplorer'e у меня все нормально работает. вроде. | |
|
|
|
|
|
|
|
для: parczynski
(11.07.2007 в 14:02)
| | подскажи, пожалуйста, как ти передаешь идентификатор в куках? пример | |
|
|
|
|
|
|
|
для: inga
(11.07.2007 в 14:32)
| | В скрипте я начинаю сессию через session_start(); Переменные храню в $_SESSION.
То есть:
session_start();
$_SESSION['user']='administrator';
|
и все.
В куках идентификатор PHPSESSID прописывается автоматически так как в php.ini прописано
| |
|
|
|
|
|
|
|
для: parczynski
(11.07.2007 в 14:46)
| | тогда почему у меня не работает, я все так же делаю, пользуюсь Internet Explorer? | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 00:31)
| | Может и в IExplorer'e не работает. просто у меня пока ни разу не глюколо с ним (6-я версия) и с мазиллой. | |
|
|
|
|
|
|
|
для: parczynski
(09.07.2007 в 00:31)
| | да, кажется в експлорере тоже не работает. По поводу способа обращения, о котором писал cheops, когда я захожу на свой сайт у меня в куках прописывается 2 PHPSESSID. одно для www.site.ru, другое для site.ru, причем идентификаторы разные!!! хотя на сайте все ссылки site.ru. Что с этим делать??? | |
|
|
|