2010-01-01 3 views
2

У меня есть шесть страниц для регистрационной формы в моем проекте PHP.Ошибка - срок действия веб-страницы в PHP?

Между любой страницы, если нажать кнопку назад на панели проводника, я получаю ошибку:

Webpage has Expired

Я использую $_POST представить данные. Я не понимаю, почему это происходит?

ответ

3

Это сообщение связано с тем, как IE обрабатывает страницы, созданные из данных POST.

В целом, чтобы избежать этой проблемы, вы должны убедиться, что в истории предыстории пользователь никогда не сможет приземлиться на страницу, созданную с помощью запроса POST. Как указано в jspcal, ваш ответ POST должен быть перенаправлен на другую страницу, запрошенную GET. Это также считается наилучшей практикой, поскольку это снижает риск отправки формы дважды.

0

Вы пробовали «$ _GET»? Вероятно, это происходит потому, что информация POST поступает со страницы раньше и не сохраняется нигде дольше, чем переход страниц, тогда как GET использует URL-адрес для отправки информации, поэтому информация где-то хранится. Я бы увидел, что происходит с GET.

+0

В общем случае вы не должны отправлять запрос GET, когда ваша поданная форма оставляет побочные эффекты, такие как вставка данных в базу данных или обновление куки-файлов браузера. Кроме того, переменные GET в IE ограничены в их общей длине содержимого. –

+0

@ Даниэль - спасибо. Я этого не знал. Можно ли использовать $ _GEt при запросе базы данных для показа контента пользователям? (ТОЛЬКО ПРОЧИТАЙТЕ, как и каталог) – Moshe

+0

Да, лучше всего использовать GET для запросов, отображающих данные без его изменения, и POST для запросов, которые могут обновлять или уничтожать данные. (HTTP DELETE и PUT могут использоваться также для изменения данных, но это не часто). – JAL

2

Это всегда происходит в некоторых браузерах (возможно, вы используете Internet Explorer), когда вы пытаетесь повторно отправить данные сообщения, возвращаясь в историю браузера. Многие браузеры, хотя (например, Firefox), дают вам возможность повторно отправлять данные сообщения, когда вы возвращаетесь в историю.

3

перенаправить страницу после получения поста:

$name = $_POST['name']; 
... 
header('Location: next.php'); 
+3

Это как шаблон PRG: http://en.wikipedia.org/wiki/Post/Redirect/Get –

0

Реальный ответ «Если вы нажмете кнопку назад, браузер не отправляет POST прошу вас первоначально отправлен, когда вы впервые посетили эту страницу» , то, что вы можете захотеть сделать, если вы делаете многоэтапную форму, либо делайте это с AJAX, либо используйте GET вместо POST.

Смежные вопросы