バックボタンの再サビットフォームデータ($ _POST)
質問
私の問題は、前のページがフォームで作成されたときに、バックボタンがブラウザに「ページの有効期限が切れた」などのことを言うことです。
例:
- Page1:検索基準で提出されたフォーム($ _POSTリクエスト、フォームポイントへのポイント2)
- Page2:$ _POSTリクエストを受け取り、結果を表示します(リンクを持つユーザーのリスト、Page3を指します)
- ページ3:ユーザープロファイルを表示します
訪問者がブラウザのバックボタンをクリックすると、「ページの有効期限が切れている」などが表示されます。
代わりに、前のページに警告なしで表示される必要があります(ページ2、ユーザーリスト)
この行動を回避するためのあなたの戦略はどうですか?
解決
検索パラメーターを使用して提出している場合、あなたはしようとしています 得る いくつかのデータ、いくつかを変更するのではありません。
したがって、HTTP GETメソッドを使用する必要があります。投稿ではなく、データを作成/変更する場合は投稿を使用する必要があります。データを取得する場合はGETを使用する必要があります。
または、実行する必要がある操作の作成/変更がある場合:
- フォームは最初のページに最初に投稿します
- そのページはいくつかの操作を行います (データベースに何かを書くようなもの)
- そして、aを使用して、別のページにリダイレクトします
Location
HTTPヘッダー。
- それは最後のページであり、これはGet Requestsを使用してブラウザのクエリであり、URLで受信したパラメーターから取得されたデータを表示します。
を参照してください 投稿/リダイレクト/取得 ウィキペディアのページ、これについて。
他のヒント
SharePointリストの列と「ワークフロー検索」の機能を使用してこれを行いました。私は「CCEmail列」を持つリスト "wfContactsList"を作成しました。これは、関連付けられたワークフローを持つリストと同じサイトコレクションにある必要があります。「CCEmail」列には、複数の電子メールを持つことができます(これは私を表しますグループ)電子メールをセミロンに分けることで。私のためのボーナスは、私のwfContactslistを編集することによってCCグループの個人を簡単に切り替えることができます。それが役立つことを願っています。
検索に投稿を使用しないでください。検索は、何も変更しないため、GETで安全に行うことができます。
これは、PHPとIE8に適用されます。
キャッシュをプライベートに設定する必要があるだけでなく、4つのキャッシュヘッダーを削除する必要があります。これは、PHP 5.3でのみ実行できます。 PHP 5.2では、Zend FrameworkのSetheader()メソッドを使用している場合にのみ、4つのヘッダーを空白値に設定できます。何らかの理由で、IE8では4つのヘッダー値を空の値に設定するには十分ではありません。これがPHP 5.3のコードです:
header_remove("Expires");
header_remove("Cache-Control");
header_remove("Pragma");
header_remove("Last-Modified");
セッションを使用してこれを行うことができます。
例えば。
$ _SESSION ['NAME'] = $ _POST ['name'];
メモリの使用量を最適化するために、プロセスが完了した後に変数を設定するように覚えておいてください。