PR

Laravelで重複クリック対策を行う一番簡単な方法

Laravelで重複クリック対策を行う一番簡単な方法 プログラミング
Laravelで重複クリック対策を行う一番簡単な方法

どんな言語でもありますが、重複クリック対策は必要です。

エンジニア目線からは「いらね~」って思う事でも、実際のユーザーでは重複クリックなんて結構あります。

今回なそんな重複クリックについて、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で重複クリック対策の一番簡単な方法はregenerateToken()を使おう

いかがだったでしょうか。

Laravelで一番簡単な重複クリック対策をご紹介いたしました。

ただし、これだけではなく念には念をで2つくらい対策を打っておくがいいと思います。

実際に僕の場合は、この方法+Javascriptでも対策を入れております。

参考になればと思います。

今日はこのあたりでサクッと終了です。