Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Page has Expired И session_start();

513
19 апреля 2007 года
Yurec
228 / / 21.09.2005
Други, такая задача. У меня на странице есть форма из которой передаются данные в этуже самую страницу.
Раньше было так
1. жму submit в своей странице search.php
2. загружается search.php с какой-то инфой
3. далее ухожу на любую страницу
4. Жму кнопку назад - все ОК

Потом в это файле search.php включил сессии (session_start();)
И стало так:
1. жму submit в своей странице search.php
2. загружается search.php с какой-то инфой
3. далее ухожу на любую страницу
4. Жму кнопку назад - выодится страница:
"Warning: Page has Expired The page you requested was created using information you submitted in a form. This page is no longer available.........click the Refresh button."

Собственно вопрос - причина этого, почему при включении сессий началась такая лабуда. И главное как этого избежать?
253
19 апреля 2007 года
Proger_XP
1.5K / / 07.08.2004
Ты пытаешься еще раз отправить форму. Вот тебе и говорит IE(по-видимому), что нажми F5 - и он ее отправит еще раз. Именно по этому на форумах часто используют страницы, которые пишут типа "Вы были авторизированны, сейчас перейдем куда-нибудь". Там используют функцию JS document.location.replace(), которая перезаписывает в истории страницу от формы, так что ее повторно уже отправить не получится
513
20 апреля 2007 года
Yurec
228 / / 21.09.2005
А всвязи с чем тогда на это влияет одна простая строчка session_start(), она ведь не влияет на данные формы, но почему то браузер пытается их отправить именно тогда, когда включена session_start.
И я еще нен совсем понял про document.location.replace(), как мне ее использовать в моем случае, чтобы избежать такой проблемы?
239
20 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Возможно, раньше параметры строки передавались методом GET, а теперь стала POST. Мне кажется, проблема не в сессиях, а именно в методе. Поставьте Вы метод GET, все и с сессиями должно работать имхо.

document.location.replace(URL) - подставляет в хистори URL вместо текущего адреса с параметрами, а также подгружает страничку по URL.
513
20 апреля 2007 года
Yurec
228 / / 21.09.2005
Прошу прощения за назойливость.
Вот прикладываю пример.
Если убрать session_start, то возврат по кнопке назад работает хорошо.
По совету Dolonet (спасибо:)) поставил в форме тип передачи данных GET - и правда возврат работать стал корректно. Одна проблема - у меня в форме очень много данных (ну очень много очень очень много) и не хочется передавать весь этот хлам в адресной строке. Может кто посоветует как избежать данной проблемы используя POST?
239
20 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Вопросик, сессию Вы стартуете на куках или на "?PHPSESSID"?
Тут написано:
Цитата:
session_start() will register internal output handler for URL rewriting when trans-sid is enabled. If a user uses ob_gzhandler or like with ob_start(), the order of output handler is important for proper output. For example, user must register ob_gzhandler before session start.

. Думаю, дело как раз в headers, которые отправляются или не отпрваляются в сессии и, соответственно, переписывают или не переписывают стандартные.

513
20 апреля 2007 года
Yurec
228 / / 21.09.2005
параметры такие:
session.use_cookies = 1
session.name = PHPSESSID
остальные закоментарены (помимо необходимых конечно))

PS Жмакать на кнопку GOGO надо дважды!
513
20 апреля 2007 года
Yurec
228 / / 21.09.2005
session_cache_limiter('public');
надо вставить перед session_start();
239
20 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
о! поздравляю :)
Но вообще рекомендую не использовать сессии PHP, а наваять несложные свои. Хотя, некоторые со мной могут не согласиться.
513
20 апреля 2007 года
Yurec
228 / / 21.09.2005
Свои сессии? Это как? Просто передавать какие-то свои переменные от страницы к странице?
239
20 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
пользоваться COOKIES, написать обработчик хитов, но свой. Туда и статистику свою подключить можно легко. Ну это так, на любителя. Я люблю сам контролировать пользователя и его путешествия по сайту.
513
20 апреля 2007 года
Yurec
228 / / 21.09.2005
А если куки не работают?
239
20 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Точно не удлиннять GET-строку. Следить за одинаковым браузером и IP-адресом. А если это поисковик? Не все сессии корректно обрабатываются поисковиками, особенно если сайт выдает разные данные по разным PHPSESSID.
Сессия по умолчанию нужна там, где человек делает какой-то выбор, что-то надо запомнить ЧЕЛОВЕКУ. В таких местах можно предупредить, что у человека выключены куки, а это нехорошо.
Да и по статистике нынче у всех они включены по умолчанию.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог