ホームページ > バックエンド開発 > PHPチュートリアル > PHP 手ぶれ防止および重複投稿防止テクノロジーの原理と応用

PHP 手ぶれ防止および重複投稿防止テクノロジーの原理と応用

WBOY
リリース: 2023-10-12 12:48:02
オリジナル
1218 人が閲覧しました

PHP 防抖和防重复提交技术的原理与应用

PHP アンチシェイクおよびアンチデュプリケート送信テクノロジの原理と応用

インターネットの発展に伴い、ユーザーは Web ページを操作するときに頻繁にクリックや重複を経験することがよくあります。 . 提出された場合、これはシステムに一定の負担とセキュリティリスクをもたらします。この問題を解決するために、開発者は多くの場合、手ぶれ防止および重複送信防止技術を採用します。この記事では、PHP における手ぶれ防止および再送信防止テクノロジの原理を紹介し、対応するコード例を示します。

1. 手ぶれ補正技術の原理と応用

手ぶれ補正技術は、ユーザーの頻繁なクリックや操作の問題を解決することを目的としており、実行を遅らせることで無効なリクエストを減らすという目的を達成します。または複数の操作を結合します。その原理は主に Javascript の setTimeout 関数とクロージャに依存しています。

1.1 原則

ユーザーが頻繁にクリック操作を実行する場合、setTimeout 関数を使用して関数の実行を遅らせることができます。遅延時間内にイベントが再度トリガーされると、前のタイマーはがクリアされて再起動されます。ユーザーが一定時間操作を停止した場合にのみ、実行機能が実際にトリガーされます。

1.2 アプリケーション

PHP プロジェクトでは、フロントエンド JS コードを通じて手ぶれ補正テクノロジを実装できます。具体的な手順は次のとおりです:

ステップ 1: jQuery ライブラリをページまたは自分で実装した JS ライブラリ。

ステップ 2: 以下に示すように、手ぶれ補正関数を作成します:

function debounce(func, delay) {
  let timer = null;
  return function() {
    clearTimeout(timer);
    timer = setTimeout(function() {
      func.apply(this, arguments)
    }, delay);
  }
}
ログイン後にコピー

ステップ 3: 以下に示すように、手ぶれ補正関数を呼び出します:

$('button').click(debounce(function() {
  // 处理点击事件的业务逻辑
}, 1000));
ログイン後にコピー

2.重複防止送信テクノロジーの原理と応用

重複防止送信テクノロジーは、主に一意の ID トークンを生成することにより、ユーザーがフォームを繰り返し送信する問題を解決するために使用されます。この原理は 2 つの部分に分けることができます。フロントエンドがトークンを生成し、バックエンドがトークンを検証します。

2.1 フロントエンドはトークンを生成します

ユーザーがフォームを送信する前に、フロントエンドは一意のトークンを生成し、sessionStorage または Cookie に保存します。トークンを生成する方法には、暗号化アルゴリズムまたは乱数を使用できます。

function generateToken() {
  var token = ''; 
  // 生成唯一不重复的token的逻辑代码
  return token;
}
ログイン後にコピー

フォームが送信される前に、トークンが非表示フィールドの値としてバックエンドに渡されます。

<form action="submit.php" method="post">
  <input type="hidden" name="token" value="<?php echo generateToken(); ?>">
  <!-- 表单的其他控件 -->
  <input type="submit" value="提交">
</form>
ログイン後にコピー

2.2 バックエンド検証トークン

バックエンドがフォーム送信を受信した後、トークンを検証する必要があります。トークンの検証に合格すると、フォームのビジネス ロジックが処理され、繰り返しの送信を防ぐためにトークンが sessionStorage または Cookie からクリアされます。

session_start();
$token = $_POST['token'];

if (isset($_SESSION['token']) && $_SESSION['token'] === $token) {
  // token验证通过
  unset($_SESSION['token']); // 清除token
  // 处理表单提交的业务逻辑
} else {
  // token验证失败,返回错误提示
}
ログイン後にコピー

3. 概要

この記事では、PHP の揺れ防止および重複送信防止テクノロジの原理と応用について紹介します。アンチシェイク テクノロジーは、操作の実行やマージを遅らせることで、無効なリクエストの送信を減らします。反復送信防止テクノロジーは、データの正確性とセキュリティを確保するためにトークンを生成することにより、フォームの反復送信を防ぎます。実際の開発では、プロジェクトのニーズに基づいて適用する適切なテクノロジを選択し、システムのパフォーマンスとユーザー エクスペリエンスを向上させることができます。

参考:

  1. [手ぶれ防止機構](https://www.jianshu.com/p/76bdffb2a268)
  2. [フォーム送信を防ぐ方法]データが重複しています](https://segmentfault.com/a/1190000017279731)

以上がPHP 手ぶれ防止および重複投稿防止テクノロジーの原理と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート