2011-07-10 6 views
1

フォームが送信されたページに戻る最良の方法は何ですか?PHP POSTを介してSAFE URLを送信すると、PHPスクリプトの終了後に元のページにリダイレクトできます。

たとえば、POST経由で「save-data.php」にデータを送信し、そのファイルがデータベースにアップロードされたデータをアップロードすると、最初にPOSTデータを送信したページに戻ることができますURLは不明ですか?

私は正しく説明しているかどうかはわかりません。

詳細:

データは管理者のみが投稿します。データベースに格納された編集可能なナビゲーションバーにこのコードを使用しています。管理者はラベルとhrefを編集して保存することができます。問題は、管理者としてログインしている限り、サイト内のどのページからでも編集できることです。保存ボタン(ナビゲーションバーと同じページにある)を押すと、データベースを挿入/更新するPHPスクリプトにデータがポストされます。私はちょうど保存がクリックされたページにユーザーを送り返す必要があります。

+0

@EmilVikströmが既に述べたように、フォームにURLを渡すことができない場合は、 '$ _SERVER ['HTTP_REFERER']'が最適です。ただし、可能な場合は、他のフォームフィールド(非表示フィールド)と一緒にパスURL - JavaScriptを使用してフィールドの値を動的に(フォームを送信する前に 'window.location'を取得して)入力します。 – LazyOne

答えて

1

は、あなたは隠された入力値を渡すことができます。しかし、私はその私のアプリケーションではたくさんのようなものを行うが、その多くのこのような:

<input type="hidden" name="return_action" value="detailview" /> 

は(これより大きい会話を。)その後、アクションを検証するために多くのものを行い、その後、権限関与

の場合これは静的なリターンであり、あなたがコントロールしているので、簡単にこれを行うことができます:

header('Location: myfile.php'); 
exit(); 

保存した後に罰金を加えてください。

URLがわからない場合はごめんなさい。あなたはすべての部品をコントロールしていますか?あなたはどの部分を制御し、どのレベルにしていますか?私は誰もがURLにデータを投稿させるだけではないと仮定していますか?

+0

データは管理者だけが投稿します。データベースに格納された編集可能なナビゲーションバーにこのコードを使用しています。管理者はラベルとリンクを編集して保存することができます。問題は、管理者としてログインしている限り、サイト内のどのページからでも編集できることです。保存ボタン(ナビゲーションバーと同じページにある)を押すと、データベースを挿入/更新するPHPスクリプトにデータがポストされます。私はちょうど保存がクリックされたページにユーザーを送り返す必要があります。 – Jai

+0

リダイレクト先の隠しフィールドの値として$ _SERVER ['PHP_SELF']を使用します。あなたはフォームを制御するので、javascriptの必要はありません。 – iLLin

0

あなたはJavaScriptでそれを行うことができます。

window.onload = history.go(-1); 

これは、PHPで行うことは不可能です。そこに誰かを送るには、参照URLを知る必要があります。 $_SERVER['HTTP_REFERER']にはリファラーが含まれている可能性がありますが、送信される保証はありません(一部のファイアウォールやブラウザはリファラーヘッダを削除します)。それは、ユーザによって変更することができるよう

<input type="hidden" name="return" value="myfile.php" /> 

ない本のファン:これが動的な場合

関連する問題