繰り返しの送信を防ぐことは、Web 開発において実際的であり、フィルタリングのために同じデータを送信したかどうかを確認するためにデータベースに直接クエリすることに加えて、ユーザーがデータを送信するときにそのようなことを防ぐこともできることがわかりました。重複送信を防ぐために、セッションと Cookie に基づいたいくつかの実装方法を導入します。
更新または再送信を防止します
そこで、このような状況が起こらないようにパラメータを追加することを検討しました。COOKIE と SESSION は利用可能ですが、誰かが COOKIE を無効にしても、悪意を持ってクリック数を更新する可能性があります。 SESSION を使用することをお勧めします。IP+URL パラメータの MD5 値が SESSION 名として使用されます
実装原理 Set max_reloadtime =100 //最大ページ更新間隔を設定します
;
ユーザーが初めてページを開いたときに、現在の時間が記録され、session_start に保存されます
ユーザーが 2 回目にページを開いたとき (session_start が存在するかどうかを判断するため)、session_start から現在時刻を減算して、差分 time_passed を取得します
time_passed
コードは次のとおりです |
コードをコピー |
セッション開始();
$k = $_GET['k']
$t = $_GET['t'];
//アンチリフレッシュタイム
$allowTime = 1800;
$ip = get_client_ip();
$allowT = md5($ip . $k . $t);
If (!isset($_SESSION[$allowT])) {
$refresh = true;
$_SESSION[$allowT] = 時間();
elseif (time() - $_SESSION[$allowT] > $allowTime) {
$refresh = true;
$_SESSION[$allowT] = 時間();
} その他 {
$refresh = false;
}
?>
フォームの繰り返し送信を防止します
コードは次のとおりです
コードをコピー
|
$code = mt_rand(0,1000000);
setcookie('addtips',$code,time()+300);
if(isset($_POST['submit']) ){
if($_COOKIE['addtips']!= $_POST['code']){
echo "このページを更新したり、フォームを繰り返し送信しないでください。";
終了();
} |
}
$smarty->assign('code',$code);
10./////フォームの繰り返し送信を防止する
tplテンプレート内
コードは次のとおりです |
コードをコピー
1.
/*PHP のセッション関数を使用すると、PHP フォームの繰り返しの送信を避けることもできます。セッションはサーバー側に保存され、次回この変数にアクセスすると、セッション変数を使用して送信された値を記録できます。フォームに一致しない場合は、繰り返し送信しているユーザーとみなされます
*/
|
Session_start();//現在のセッションに基づいて乱数を生成します
$code = mt_rand(0,1000000);
$_SESSION['コード'] = $コード;
//フォーム内のパスを非表示にする: |
< input type="hidden" name="originator" value="< ?=$code?>">
//受信ページのコードは次のとおりです:
セッション開始();
if(isset($_POST['originator'])) {
if($_POST['発信者'] ==
$_SESSION['コード']){
// フォームを処理するステートメント、省略
}その他{
echo 'このページを更新しないでください。または
もう一度フォームを送信してください。 』;
}
}
http://www.bkjia.com/PHPjc/633153.html
www.bkjia.com
true
| http://www.bkjia.com/PHPjc/633153.html
技術記事繰り返しの送信を防ぐことは、Web 開発において現実的でよく発生する問題であることに加えて、データベースに直接クエリを実行して、ユーザーが同じデータを送信したかどうかをフィルタリングすることもできます...
。
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |