ติดตั้ง reCAPTCHA ใน Laravel 5
เนื่องจากมีบางโปรเจ็คถูก 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