PHPページの重複送信を防ぐ方法まとめ_PHPチュートリアル
1. 送信ボタンを無効に設定します
ユーザーが送信すると、ボタンはすぐに無効になります。これはjsを使って実装されています。
代
コードを送信する前にコードをコピーしてください:
................................................................................... ...................................
コードをコピー
コードは次のとおりです
アイデア: ユーザーがボタンを送信すると、トークンが生成され (トークンはビジネス送信ごとに一意の値です)、セッションに保存され、有効期限が設定されます。ユーザーが再度送信するときに、トークンが一貫していて期限切れであるかどうかを確認します。一貫性があり、期限切れになっていない場合は、2 回送信されたとみなされます。プログラムの実行中にエラーが発生した場合、セッションに保存されている値をクリアする必要があります。手順は以下をご覧ください
$uniqueid = empty($uniqueid) ? Yii::app()->user->id . Yii::app()->name 。 ->mihome: $uniqueid;
$token = md5("wms_check_repeat" . $uniqueid);
$time = time();
if (isset($_SESSION['token']) && !empty($_SESSION['token']) && $_SESSION['token'] == $token && ($time - $_SESSION['expire_time'] < ; $期限切れ)) {
return false;
false を返します。 S $ _Session ['token'] = $ token;
(設定解除 ($ _ session ['token']); 設定解除 ($ _ session ['expire_time']);
アイデア: ページがインストールされると、トークンが生成され、セッションに保存され、フォームに書き込まれます。フォームが送信されると、サーバーはセッションに保存されているトークンとトークンを比較し、ページが送信されると、セッションに保存されているトークンが破棄されます。 2 回目は、セッションに保存されたトークンが原因で、トークンが存在せず、エラーが報告されます。以下はコードです
/**
.値が存在しない場合、エラーが報告されます
* @param type $uniqueid
* @return type
*/
関数 createToken($uniqueid) {
$uniqueid = empty($uniqueid) ? Yii::app()->user->id . Yii::app()->user 。 ->mihome : $uniqueid;
を使用する - -
セッション_write_close();
$token を返す;
関数 checkToken($token) {
if (!isset($_SESSION['form_token']) || empty($_SESSION['form_token']) || $_SESSION['form_token'] != $token) {
return false; unset($_SESSION ['form_token']);
true を返します。
上記 3 つの方法をまとめましたが、個人的には、1 つ目と 2 つ目の方法を一緒に使用すると、より良い結果が得られると感じています。 2 番目の方法と 3 番目の方法 個人的には、3 番目の方法に利点があると感じます。
2 番目と 3 番目のメソッドはどちらもセッション内にトークンを書き込みます。このメソッドの利点はストレージ領域を節約できることですが、欠点は、セッションが書き込む前にページ全体をロードする必要があることです。また、ユーザーが送信を複数回クリックした場合でも、セッションがまだ書き込まれていないため、システムはそれが最初の入力であると認識する可能性があります。検証が機能しなくなります。幸いなことに、php 関数は素晴らしい機能を提供します。 session_write_close() を使用すると、ページのロードを待たずにすぐにセッションを書き込むことができます。同僚には、redis、memcache、データベースなど、セッションを保存するための多くのオプションもあります。
http://www.bkjia.com/PHPjc/825207.html
www.bkjia.com
true

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
