どんな言語でもありますが、重複クリック対策は必要です。
エンジニア目線からは「いらね~」って思う事でも、実際のユーザーでは重複クリックなんて結構あります。
今回なそんな重複クリックについて、PHPの人気フレームワークであるLaravelで一番簡単に行う方法をご紹介したいと思います。
このブログは現役のエンジニア(プログラマー歴が約12年)の僕(よしたか)が2019年12月後半から日々更新しております。
もしもアフィリエイトは会員登録後も無料です!
今すぐ会員登録してアフィリエイトを始めよう!
どんなケースで重複クリックが起こるのか?
対策を入れる前に知っておきたいですよね。
大体は以下のような感じかと思います。
- ネット回線が遅くて再度クリック
- リロードする(システムにもよる)
- 故意にダブルクリック
- その他CSRF攻撃等
ざっとこんな感じでしょうか。
金額が発生するWebサイト(ECショップ)等では重複クリック対策はぜひとも入れておきたいですね。
Laravelで重複クリック対策を行う一番簡単な方法
では実際に、PHPのLaravelでの対策方法をご紹介したいと思います。
LaravelではCSRF対策を入れないと基本的には419エラーとなります。
このCSRF対策にはトークンなるものがありますが、今回はそのトークンを利用する方法です。
regenerateToken()を利用する
regenerateToken()を利用する事で重複クリック対策を行います。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function complete(Request $request){
// データ取得
$data = $request->all();
// 取得したデータをもとにDB登録処理などを行う
// 重複クリック対策
$request->session()->regenerateToken();
// view表示
return view('test.complete', []);
}
}
こんな感じですね。
LaravelのCSRF対策で使われるトークンですが、実はこれ値が変わらないんですよね。
値が変わらないのは、CSRF対策としてどうなの?という突っ込みどころを利用した方法になりますね。
まとめ
いかがだったでしょうか。
Laravelで一番簡単な重複クリック対策をご紹介いたしました。
ただし、これだけではなく念には念をで2つくらい対策を打っておくがいいと思います。
実際に僕の場合は、この方法+Javascriptでも対策を入れております。
参考になればと思います。
今日はこのあたりでサクッと終了です。