2016-09-13 13 views
0

私は大きなサイトで作業しており、そのサイトには車のフィルタリング機能があります。GETからPOSTへのフォーム提出を変更するPHP

ユーザがフィルタオプション、車の番号などを選択してプレスを実行すると、サーバ(PHP)にGETリクエストが出ます。すべての変数を$ _GETから$ _POSTに変更しました。フォームの送信方法が変更された場合、2つ以上のページがある可能性がありますので、ユーザーが2番目または3番目のページをクリックすると、次のようなリクエストにページ番号が追加されます。 .example.com/GET_REQUEST_VARIABLES - > www.example.com/pagenumber & GET_REQUEST_VARIABLES。その方法のサーバーは2番目のページアイテムを返します。

が、私はPOSTリクエストを送信するときに、サーバーが返すために何を知っていないので、それは、URL内に保存されていない、

あなたは私がこの問題を解決することができますか?

私はあなたが質問をするならば、私はここで明確に

+1

2ページ目に行くと、$ _POSTに保存されたすべてのオプションが失われていますか?または、ページ2に行くと、ページ番号がURLに追加されていないため、ページ2はありません。 –

+1

私は2ページ目に行くと、サーバーは投稿を使う前に送られたすべての変数を失いますが、ページ番号が追加されますが、その別のリクエストのために投稿から送信された変数は追加されません – nikagar4

+0

$ _POST変数を$ _SESSION変数?これにより、ページ間での移動が可能になります。それ以外の場合は、毎回情報をPOSTする必要があります。 $ _SESSIONをお勧めします。 – ckimbrell

答えて

1

を説明した場合、私は知らないよりよく説明することができますが、POSTを使用しての代わりにGETしている理由はありますか?この場合、GETを使用する方がSEOに優位です。フォーム提出で機密データを送信しているわけではないので、POSTを使用する理由は見当たりません。 GETを使用するもう一つの利点は、検索結果に直接リンクできることです。 (例えば、私がHonda Fitを検索して妻を見せたいと思ったら、私はそのページへの直接のリンクを持っています)

(違いはPOSTとGETの違いを箇条書きで解説していますので、HEREをご覧ください)。

あなたの他の質問に答えるために、POSTはURLを使用しません。 GETだけですので、フォームデータをURLにシリアライズする必要がある場合は、GETを使用する必要があります。フォームの送信方法をPOSTに変更したので、サーバー側のロジックも変更する必要があります。私はあなたが使用しているサーバー側の技術を知らないとあまり使うことができません。あなたがPHPを使用していると仮定すると、あなたはあなただけの変更、MANページのあまりされていない場合here

を開始することができ、すべての$ _GETは[「フィールド名」]は$ _POST [「フィールド名」]にPHPで呼び出します

あなたは常に最初のページをPOSTし、ページ番号としてGET ONLYを使うことができます。この形式では、これを行うだけです

<form method="post" action="www.foo.com/search?page=1"> 

次に、あなたのPOSTされた変数を$ _SESSIONスーパーグローバルに格納することができます。ブーム。 POSTされたページネーション。

$nextPageURL = 'www.foo.com/search?page=' . $_GET['page'] + 1; 
if($_GET['page'] !== '0'){ 
    $lastPageURL = 'www.foo.com/search?page=' . $_GET['page'] - 1; 
} 
+0

私はポストリクエストを使用している理由は、リクエストが大きすぎることがあり、サーバが「大きなURL」エラーを返すということです – nikagar4

+0

あなたは正しいですが、将来リクエストが大きくなるとどうなりますか? – nikagar4

+0

これが問題になる場合は、その行の長さを常に増やすことができます。 –

関連する問題