2017-10-13 4 views
0

POSTスクリプトを実行した後、私はそれを呼び出したページに戻る必要があります。PHP/HTMLは別のページにナビゲートし、出力を表示しますか?

header("Location: /url/to/the/other/page"); 

しかし、それを使用した制限は、私はその呼び出しの前にユーザー「データベースに正常に挿入データ」に出力されていないということです:スクリプトの終わりに私は戻ってナビゲートするために、このような何かを呼び出すことができます。元のページに戻ると、その通知をどのように表示できますか?

+0

代わりにDBを処理するスクリプトにPOSTするのにjavascriptを使用できますか? – StaticBeagle

+0

あなたはそれにパラメータを渡すことができます –

+0

リダイレクトの前に '$ SESSION'に変数を設定します。その後、新しい場所でこれにアクセスしてください –

答えて

1

厳密に言えば、出力も表示されたヘッダーを持つページからリダイレクトすることはできません。ブラウザに出力を送信することも、リダイレクトヘッダーを送信することもできますが、両方を送信することはできません。

何かを表示したい場合は、数秒待ってからリダイレクトを送信すると、JavaScriptでクライアント側のリダイレクトを使用することになります。このような何か:

<html> 
    <head> 
     <script type="text/javascript"> 
      setTimeout(function() { 
       location.href='/newpage.html', 
      }, 5000); 
     </script> 
    <body> 
     successfully inserted data to database. 
    </body> 
</html> 

これはページをリダイレクトsetTimeout()で関数を実行し、5秒待って、<body>に何レンダリングされます。

技術的には、そうではありません。5秒カウンタは、ページの読み込みが完了したかどうかにかかわらずJSが実行されるとすぐに開始されます。

あなたはあなたではなく、仲介のページへリダイレクトするよりから呼び出され、同じページに通知を表示したいしている場合は、セッション値を設定する必要がありますあなたのページに続いて

$_SESSION['note'] = 'data_saved'; 

を通知を表示したい:

if (isset($_SESSION['note']) && $_SESSION['note'] == 'data_saved') { 
    echo "successfully inserted data to database.\n"; 
    unset($_SESSION['note']); 
} 

これは、あなたが$_SESSIONを参照するすべてのページの上部にsession_start()を実行することが必要になります。

+0

上記の$ _SESSIONを使用する例は、私にとっては完璧に機能しました。 – nhershy