2016-08-10 5 views
0

Firefox、Internet Explorerブラウザでページをリロードしたりページを前に戻すPHPアプリケーションを取得しようとしています。ブラウザで前後のボタンを押すときに、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の要求にページの負荷を処理する - リダイレクトループがあるように、これがGET値をクリア遭遇し、このスクリプトは、私はTAのに内容を変更したタグを持つすべての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スクリプトの1の後に含まれていませんgを<body onunload="">にして、いくつかの洞察力のある提案に続いて強制的にリロードを試みてください。

残念ながら、再ロードの動作は、一貫して確実に機能していません。

どのように私はすべてのPHPスクリプト全体で動作するように、これまで持っているもの修正することができますか?

答えて

0

短い答え:あなたがすることはできません。

あなたユーザーは「戻る」を押すと、ブラウザは、前のページがPOST経由で提出されたことを知っていて、彼が何をロードする前にフォームを再送信したい場合、ユーザーに尋ねます。したがって、ブラウザにはユーザにプロンプ​​トが表示される前にロードされていないため、リロードをトリガするものを追加することはできません。

これを防止する唯一の方法は、(もちろん、他の欠点を有している)を取得するPOSTから切り替えることです。あるいは、すべてのPOSTフォームにAJAXを使用し、結果が入った後に次のページにリダイレクトすることもできます。

関連する問題