เนื่องจากมีบางโปรเจ็คถูก spam bot มาเยี่ยมเยียนบ่อย เลยคิดว่าหา Captcha มาติดเพิ่มเติมจะดีกว่า เลยมาจบที่แพ็กเกจที่ชื่อว่า No CAPTCHA reCAPTCHA ดูแล้วใช้งานไม่ยากนัก มาดูวิธีติดตั้งและใช้งานเบื้องต้นกันเลยครับกันเลยครับ

สำหรับ Laravel 4 ให้ใช้ v1 branch นี้ครับ

ติดตั้ง

composer require anhskohbo/no-captcha

ตั้งค่า

เนื่องจากแพ็กเกจนี้ support ตัว Auto-discovery ดังนั้นถ้าใช้ Laravel 5.5 ขึ้นไป ให้ข้ามไปยังการกำหนดค่าในไฟล์ .env

ในไฟล์ app/config/app.php ให้เพิ่มตามด้านล่างนี้

1. เพิ่ม ServiceProvider ใน providers array

Anhskohbo\NoCaptcha\NoCaptchaServiceProvider::class,

2. เพิ่ม class alias ใน aliases array

'NoCaptcha' => Anhskohbo\NoCaptcha\Facades\NoCaptcha::class,

3. ทำการ Publish ค่า config

php artisan vendor:publish --provider="Anhskohbo\NoCaptcha\NoCaptchaServiceProvider"

กำหนดค่า

เพิ่ม NOCAPTCHA_SECRET และ NOCAPTCHA_SITEKEY ในไฟล์ .env ดังนี้

NOCAPTCHA_SECRET=secret-key
NOCAPTCHA_SITEKEY=site-key

(สามารถไปรับ secret-key และ site-key ได้จาก ที่นี่)

วิธีใช้งาน

ให้ไปที่ฟอร์มในไฟล์ blade template ที่เราต้องการติดตั้ง reCAPTCHA และให้ใส่โค้ดตามด้านล่างนี้ เพื่อดึงไฟล์ Javascript สำหรับเรียกใช้ API

{!! NoCaptcha::renderJs() !!}

เพิ่มโค้ดด้านล่างนี้ เพื่อแสดงผล reCAPTCHA

{!! NoCaptcha::display() !!} 
// หรือ Dark theme
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}

การตรวจสอบ

เพิ่มกฏ 'g-recaptcha-response' => 'required|captcha' ไปยัง rules array ดังนี้

$validate = Validator::make(Input::all(), [
 'g-recaptcha-response' => 'required|captcha'
]);

กลับมาที่ฟอร์มในไฟล์ blade template เพิ่มโค้ดด้านล่างนี้ เพื่อแสดง captcha error

@if ($errors->has('g-recaptcha-response'))
    <span class="help-block">
        <strong>{{ $errors->first('g-recaptcha-response') }}</strong>
    </span>
@endif

ก็หวังว่าคงมีประโยชน์สำหรับใครที่ต้องการใช้งานนะครับ จริงๆแล้ว มันยังมี Option ต่างๆอีก ทั้งTesting หรือใช้กับ PHP เพียวๆ เลยลองไปอ่านเพิ่มเติมตามลิงค์ด้านล่างต่อได้เลยนะครับ

อ้างอิง https://github.com/anhskohbo/no-captcha