ホームページ >バックエンド開発 >PHPチュートリアル >PHP でフォームの繰り返し送信を防ぐ方法の紹介 (コード例)

PHP でフォームの繰り返し送信を防ぐ方法の紹介 (コード例)

不言
不言転載
2019-02-11 09:21:122512ブラウズ

この記事は、PHP でのフォームの重複送信を防止する方法 (コード例) の紹介です。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。 。

恥ずかしながら、数日前にプロジェクトに取り組んでいたときに、レベルの低い間違いを犯してしまいました。会社のバックエンドでフォームを送信する際、1つは従業員が使用し、もう1つは私がhtmlで作成したフォームを検証せずに何度も送信し、結果はエラーになってしまいました。それを書き留めて記録して自分に思い出させ、決して無視しないでください。

解決策

実際にはたくさんの方法がありますが、ここでは簡単な例をいくつか紹介します。

フレームワーク

多くのフレームワークには重複送信を防止する機能が備わっていますが、これについては誰もが知っているはずなので、ここでは詳しく説明しません。

フロントエンド

原理は非常にシンプルで、ユーザーが送信をクリックした後、JS を使用して送信ボタンをグレー表示にするだけです。

バックエンド

つまり、検証にはPHPが使用されますが、もちろん以下の種類に限定されるわけではありません

Cookie

ユーザーが送信するフォームをバックエンドに送信し、Cookie にマークを付け、指定された時間内に繰り返し送信した場合は無効になります。ただし、ユーザーが Cookie を無効にすると、このメソッドは失敗します。

<?php

if (isset($_COOKIE['formFlag'])) {
    exit('error');
}

// 处理数据

// 30秒内重复提交无效
setcookie('formFlag', time(), time() + 30);

セッション

フォーム ページを表示すると、乱数が生成され、セッションとフォームの非表示フィールドに保存されます。初めて送信するときは、セッション内の値を比較し、正常に削除します。

rreeee

以上がPHP でフォームの繰り返し送信を防ぐ方法の紹介 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。