Вопрос по php – Срок действия документа PHP истек

22

Я делаю некоторое PHP-кодирование, если "Назад" Нажав кнопку в браузере, я получаю следующую ошибку:

Document Expired
This document is no longer available.

Какой код я могу реализовать, чтобы удовлетворить эту ситуацию

@AlphaMale: да user1383147
Какой у тебя код? Roman Newaza
Вы пытаетесь отправить форму, а затем через некоторое время нажмите кнопку назад? AlphaMale
возможный дубликатError - Web Page Has Expired in PHP? JJJ
Вы используете POST для поиска? Простой ответ: не т. Teson

Ваш Ответ

8   ответов
16

Установите заголовок Cache-Control на главной странице.

<?php
header('Cache-Control: max-age=900');
?>
Это не сработало для меня, но решение, предложенное @tazo todua ниже, сработало.
2

Перейдите на сервер php.ini и изменить это

session.cache_limiter = nocache

Как

 session.cache_limiter = public

Проблема будет решена. Я решил свою проблему с этим.

Это сработало и для меня.
1

Я прошел через ту же проблему. На странице, на которую я хочу вернуться, были опубликованы значения формы, поэтому при нажатии на ссылку «Назад» отображалась ошибка «Истек срок действия документа». Смотрите пример-

Есть три страницы, page1.php, page2.php и page3.php. Теперь я отправляю некоторую форму из page1.php в page2.php, используя метод POST. Из page2.php я нажал на ссылку page3.php.

Теперь я хочу вернуться на page2.php из page3.php. Но у page2.php есть значения формы, отправленные с использованием метода POST, и когда я захожу на page2.php из page3.php, в браузере отображается ошибка & quot; Docuemnt Expired & quot ;.

Так что я использовалGET методinstead изPOST, Поэтому, когда вы вернетесь на page2.php, тогда не будет POST-значений формы, и страница загрузится правильно. Кроме того, так как значения формы присутствуют в URL, страница будет загружаться как положено.

15

Using Post/Redirect/Get rule you can avoid this.

Эта проблема возникнет из-за следующего:

  • Let say I have example1.php, example2.php and example3.php
  • I am posting some values from example1.php to example2.php then I did all the DB stuff as per my need and rendered the page (Not Redirected - Just posted and the page got rendered).
  • After that I have redirected the page from example2.php to example3.php. Now if you click browser back Document will Expire.

To Avoid this we can post the values from example1.php to example2.php and redirect the user to some other page immediately.

ЭтоPost / Redirect / Get шаблон, которому можно следовать, чтобы избежать истечения срока действия документа. Это также помогает избежать избыточной записи в БД.

0

Эта проблема возникнет по следующим двум сценариям:

  • Implementing searching with Post
  • Redirecting back to a page that was posted previously.

Есть 2 способа преодолеть эту проблему легко без какого-либо взлома.

Заsearch form не использоватьpost метод, вместо этого используйте метод get, и все работает нормально.

Если вам действительно необходимо скрыть входные данные формы по какой-либо причине и вы хотите использовать метод post, то ссылку / действие, которое вызывает перенаправление на другую страницу, сделайте его перенаправленным через JavaScript.

location.replace('http://example.com/page2');

Это удалит реферальный URL и вызовет новый http-запрос. Теперь нажатие кнопки «Назад» в браузере не приведет к истечению срока действия документа.

1

просто поместите эту строку на своей странице.

<?php 
header("Cache-Control: max-age=300, must-revalidate"); 
?>
21

Add this in the start of PHP codes:

ini_set('session.cache_limiter','public');
session_cache_limiter(false);
Супер легко исправить относительно сложную и неприятную проблему, спасибо!
Благодарю. Это решило проблему кнопки назад ..
1

Проверьте, не отключено ли кэширование в заголовке, например

<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

Хорошо, и если это так, что мне делать? user1383147
Вы должны удалить это. Это должно включить кэширование.

Похожие вопросы