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

Форум PHP

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

 

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

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

тема: Теряются данные сессии
 
 автор: Shiva   (20.12.2006 в 20:44)   письмо автору
 
 

Совершенно бредовая ситуация.

Пользователь заходит в магазин. Выбирает товар - данные по покупке заносятся в сессию.
Затем происходит вот что.

1.Если нажать ссылку перехода на главную страницу, данные сессии теряются.
2.Если набрать - символ в символ - адрес этой же главной страницы вручную - все проходит нормально.
Не веря своим глазам, протестировал раз 10. Адрес ссылки копировал напрямую из html-кода полученной страницы. Совершенно точно - данные теряются ТОЛЬКО в случае щелчка по ссылке.
Понимаю, что звучит как ахинея, но так и происходит.

Проблема очень срочная. Огромное спасибо сочувствующим).

   
 
 автор: Shiva   (20.12.2006 в 20:47)   письмо автору
 
   для: Shiva   (20.12.2006 в 20:44)
 

Да, еще информация по теме. Если в текущей сессии - т.е., не закрывая окна, проделать эти манипуляции еще раз - все проходит нормально. Т.е. начиная со второго раза, все работает.

Отмечу на всякий случай, что ссылка прямая - т.е. никакой обработки onclick и т.п.

И еще. Также данные сессии теряются, если происходит переадресация по header("Location: ...");

К слову, этот же код благополучно работает еще на десятке сайтов. Может ли браузер при щелчке по ссылке иначе отправлять/получать заголовки, чем при непосредственном вводе в адресную строку? И может ли сервер, ввиду каких-то настроек, реаегировать на это иначе, чем на других сайтах.

   
 
 автор: cheops   (20.12.2006 в 21:04)   письмо автору
 
   для: Shiva   (20.12.2006 в 20:44)
 

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

   
 
 автор: Shiva   (20.12.2006 в 21:20)   письмо автору
 
   для: cheops   (20.12.2006 в 21:04)
 

Действительно, если заходить на страницу магазина без www - все работает.

Тогда вопросы - почему же сессия была доступна при прямом наборе такого же url в адресную строку?
И почему со второго раза все работало?

Мне это приходило в голову - но, не зная, насколько это возможно, я не углублялся и ограничился тем, что переписал пресловутую ссылку без www. В любом случае, огромное спасибо. Я избежал безумия...

   
 
 автор: Shiva   (20.12.2006 в 21:23)   письмо автору
 
   для: cheops   (20.12.2006 в 21:04)
 

Еще вопрос - можно ли изменить эту привязку сессий через .htaccess? Или - если нет - имеет ли смысл обращаться к хостеру с просьбой изменить эту ситуацию?

Сайт очень велик, не хотелось бы перелопачивать весь код...

   
 
 автор: XPraptor   (21.12.2006 в 05:17)   письмо автору
 
   для: Shiva   (20.12.2006 в 21:23)
 

Изменить скорее всего нельзя. В настройках хостера должно быть установлено короткое имя твоего хоста для сессий. Это также как слать куки: cookies("name", "value", time() + 3600, "/", "site.ru") и если вместо sute.ru вписать www.site.ru то будет потеря кук. Поэтому тебе к хостеру за настройкой виртуальных хостов.

   
 
 автор: Shiva   (21.12.2006 в 11:06)   письмо автору
 
   для: XPraptor   (21.12.2006 в 05:17)
 

Почитав про эту историю, ограничился пока переадресацией с/на www. через ModRewrite. Каковы минусы такого решения?
Спасибо.

   
 
 автор: cheops   (21.12.2006 в 12:58)   письмо автору
 
   для: Shiva   (21.12.2006 в 11:06)
 

Каковы минусы такого решения?

Увеличение нагрузки на сервер, но она не значительная.

   
 
 автор: Shiva   (21.12.2006 в 23:02)   письмо автору
 
   для: cheops   (21.12.2006 в 12:58)
 

Большое спасибо еще раз.

   
Rambler's Top100
вверх

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