Forms の繰り返し送信を防ぐ ThinkPHP メソッド_PHP チュートリアル
Jul 21, 2016 pm 03:25 PMただし、回避できない状況が 1 つあります。
ユーザーがフォームを送信した後、ブラウザの戻るボタンをクリックしてフォーム ページに戻ります。このとき、ブラウザはキャッシュからページを直接取得するため、トークンの検証は失敗するはずです。
location.replace() メソッドを使用して現在の履歴レコードを置き換えるなど、インターネット上でこの問題を回避する方法はたくさんありますが、これにはまだ欠陥があります。極端な場合には、ユーザーがページ間を複数回切り替えた場合、「戻る」ボタンを数回クリックすると、前のフォーム ページに戻る可能性があります。
解決策は、http ヘッダーで Cache-Control: no-cache、no-store を設定することです。ただし、ページヘッドに <meta http-equiv="Cache-Control" content="no-cache, no-store"> を追加するか、header("Cache-control: no-cache, no-ストア") は無効です。

長い間検索した結果、問題は ThinkPHP のテンプレート レンダリング メカニズムにあることがわかりました。ThinkPHP/Lib/Think/Core/View.class.php を開いて 173 行目を見てください。
header( "キャッシュ制御: プライベート" ); //ページバウンスをサポート
|
この行をコメントアウトし、TPコアキャッシュを削除し、再試行すると、HTTP応答ヘッダーが正常に変更されたことがわかります


人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか?

トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します)

すぐにマスター: Huawei 携帯電話で 2 つの WeChat アカウントを開く方法が明らかに!

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます)
