2012-01-09 11 views
0

私は、フォームを送信した後、ページ区切りで前のページに戻ることができるようにしたいと考えています。通常私は投稿を使用しますが、これはURLに渡されません。postとURL paramsの比較

代わりにgetを使用することをお勧めしますか?

+0

あなたはPOST中にフォームを送信し、リダイレクトページに(使用する可能性が...いくつかの中に置くことを忘れないでください['header'](http://uk3.php.net/manual/en/function.header.php))をGET paramsと組み合わせると、ブックマークが可能になります。 – Alex

+0

もちろん。あなたは検索のために 'GET'を使うことができます。 –

+0

どのようなフォームですか?検索フォームやユーザーの詳細などは? – Treffynnon

答えて

1

ページング情報をフォームに保存できないようにするものはありません。たとえば、あなたはである:

http://mysite/list.php?page=3&maxperpage=50 

ページ上のリンクが

http://mysite/edit.php?id=8475&page=3&maxperpage=50 

フォームに隠されたコントロールとしてページやmaxperpageを保存するためにユーザーをリダイレクトすることができ、それらを毎回リロードます(フォームを表示ポストバックエラーの場合)

<input type="hidden" name="page" value="<?php echo $_REQUEST['page']; ?>" /> 
<input type="hidden" name="maxperpage" value="<?php echo $_REQUEST['maxperpage']; ?>" /> 

ポストバックが完了すると、次に、その前のページにリダイレクトするように_POST隠しフィールドを使用します。

header('location: http://mysite/list.php?page='.$_POST['page'].'&maxperpage='.$_POST['maxperpage']); 

明らかに、私はそこのような検証に多くのものをスキップしましたので、

+0

私のフォームには十数個のパラメータがあります。 – Paul

+0

これらのページ区切り/フィルター/検索パラメーターを渡すときは、GETを使用し続けますが、編集フォームなどのフォームにアクセスすると、これらのパラメーターをhiddensフィールドにプッシュします。次に、これらの隠しフィールド(保存後など)で完了すると、それらの隠しフィールドをURLに戻して、ユーザーをリダイレクトします。 –

1

これは、主にどのようなコンテンツをフォームを通過させるかによって異なります。

一般に、フォームにテキストエリアがある場合は、URLの最大文字数に達する可能性が高いとGET経由で送信することをお勧めします。 そして明らかにあなたがファイルを渡すならば、それはPOSTである必要があります。 ああ、明らかに機密データ(ユーザー名/パスワードなど)の場合、GETを使用するのは良い考えではありません。

それ以外の場合は、データをどこでも使用する前に「クリーニング」している限り、GETを使用しても問題ありません。

GETを使用できない場合は、代わりにPOSTを使用することができますが、COOKIEまたはSESSION変数にすべてを保存して、ページネーション/ブレッドクラムの送信後に前のページで取得することができます。形。

+0

私はいつもSESSION変数を忘れています。これは、ユーザーが正しいブックマークを付けることができないという事実を除いて、より良い解決策かもしれません。 – Paul

+0

@Paul正確には、セッションはサーバー上にあるため、URLの一部ではありません。そして、あなたはURLをブックマークしているので、私はそれをお勧めしません... –

+0

@Paul no、残念ながら、これはユーザーがURLをブックマークできないことを意味します。それを提供する唯一の方法は、彼らにGETのURLを与えることです。 – Nick

1

アレックスとtanduのコメントに少し拡大:

あなたがデータを送信しているときは、インクルードがサーバー上で状態を変更しますPOSTを使用する必要があります。データを要求したり、サーバーの状態を変更しないままにするその他の操作を実行しているときは、GETを使用する必要があります。

はい、フォームを送信するためにPOSTを使用するのは間違いありません.GETはこの場合はお勧めできません。

その後、ポストがあなたの前のページにリダイレクトされた後、おそらく少し遅れて、ありがとうメッセージを表示します。

+0

基本的に私のDBからデータを取得して表示していますので、あなたの投稿を間違って読まない限り、サーバーの状態を実際に変更していません。 – Paul

+0

検索フォームと結果を表示するようなことをしているのであれば、GETを使うべきですが、queryStringに何を追加するかは注意してください。これは、結果ページURLを保存/リピート可能にする利点があります。たとえば、favouriesに追加することができます。私たちはこのフォームで達成しようとしていることについてより多くの情報を使用することができます。 – Stuart

関連する問題