2016-08-10 14 views
0

Я пытаюсь получить приложение PHP для перезагрузки на странице назад или на странице вперед в браузерах Firefox, Internet Explorer.Как принудительно перезагрузить страницу PHP при нажатии кнопок назад и вперед в браузере?

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

session.php - Включено поверх всех сценариев PHP и в первую очередь обрабатывает загрузку страницы по запросу для перезагрузок

<?php 
     session_start(); 

     $_SESSION['page_requested'] = $_SERVER['REQUEST_URI']; 


     if (isset($_POST['scrollamount']) && $_POST['scrollamount'] != "") 
       $_SESSION['scrollamount'] = $_POST['scrollamount']; 


     if (isset($_SESSION['page_loaded']) && !isset($_GET['load'])) 
     { 
      unset($_SESSION['page_loaded']); 
      if (strpos($_SESSION['page_requested'], '?') !== false) 
      { 
       header("Location: $_SESSION[page_requested]&load=1"); 
       exit; 
      } 
      else 
      { 
       header("Location: $_SESSION[page_requested]?load=1"); 
       exit; 
      }  
     } 
     else if (!isset($_GET['load'])) 
     { 
      header("Location: ?load=1"); 
      exit; 
     } 
    ?> 

reload.php - Это очищает значение приобретают так, чтобы петля редирект не сталкивался и этот скрипт включаются после того, выше и на каждый PHP скрипте

<? 
     $_SESSION['page_loaded'] = true; 
     $_SESSION['page_requested'] = str_replace('&load=1', '', $_SESSION['page_requested']); 
     $_SESSION['page_requested'] = str_replace('?load=1', '', $_SESSION['page_requested']); 
?> 

на каждой странице PHP с тегом я модифицировал содержимое в том g, чтобы быть <body onunload="">, чтобы попытаться заставить перезагрузить следующие некоторые проницательные предложения.

К сожалению, перезагрузка не работает последовательно и надежно.

Как я могу изменить то, что у меня есть, чтобы работать во всех сценариях PHP?

ответ

0

Короткий ответ: вы не можете.

Когда пользователь нажимает «Назад», браузер знает, что предыдущая страница была отправлена ​​через POST, и спрашивает у пользователя, хочет ли он повторно отправить форму ПЕРЕД загрузкой. Таким образом, вы не можете добавить ничего, что могло бы вызвать перезагрузку, ни с сервера, ни с клиентской стороны, потому что браузер даже не загружает его, прежде чем он запрашивает пользователя.

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

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