สำหรับ Laravel 4 ให้ใช้สาขา v1
composer require anhskohbo/no-captcha
หมายเหตุ แพ็คเกจนี้รองรับคุณสมบัติการค้นหาอัตโนมัติของ Laravel 5.5 ขึ้นไป ดังนั้นให้ข้ามคำแนะนำ Setup
เหล่านี้หากคุณใช้ Laravel 5.5 ขึ้นไป
ใน app/config/app.php
ให้เพิ่มสิ่งต่อไปนี้:
1- ServiceProvider ไปยังอาร์เรย์ผู้ให้บริการ:
AnhskohboNoCaptchaNoCaptchaServiceProvider::คลาส,
2- นามแฝงคลาสของอาร์เรย์นามแฝง:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3- เผยแพร่ไฟล์ปรับแต่ง
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"
เพิ่ม NOCAPTCHA_SECRET
และ NOCAPTCHA_SITEKEY
ในไฟล์ .env :
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(คุณสามารถรับได้จากที่นี่)
ด้วยตัวเลือกเริ่มต้น:
- NoCaptcha::renderJs() !!}
ด้วยการสนับสนุนภาษาหรือตัวเลือก onloadCallback:
- NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
วิดเจ็ตเริ่มต้น:
- NoCaptcha::display() !!}
ด้วยแอตทริบิวต์ที่กำหนดเอง (ธีม, ขนาด, โทรกลับ ...) :
- NoCaptcha::display(['data-theme' => 'dark']) !!}
reCAPTCHA ที่มองไม่เห็นโดยใช้ปุ่มส่ง:
- NoCaptcha::displaySubmit('my-form-id', 'submit now!', ['data-theme' => 'dark']) !!}
โปรดสังเกตว่าต้องใช้รหัสของแบบฟอร์มในวิธีนี้เพื่อให้การโทรกลับที่สร้างอัตโนมัติส่งแบบฟอร์มเมื่อยืนยันแคปต์ชาสำเร็จ
เพิ่ม 'g-recaptcha-response' => 'required|captcha'
ให้กับกฎ array :
$validate = เครื่องมือตรวจสอบความถูกต้อง::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
เพิ่มค่าต่อไปนี้ให้กับอาร์เรย์ custom
ในไฟล์ภาษา validation
:
'custom' => ['g-recaptcha-response' => ['required' => 'โปรดตรวจสอบว่าคุณไม่ใช่โรบ็อต','captcha' => 'ข้อผิดพลาด Captcha! ลองอีกครั้งในภายหลังหรือติดต่อผู้ดูแลไซต์', - -
จากนั้นตรวจสอบข้อผิดพลาด captcha ใน Form
:
@if ($errors->has('g-recaptcha-response')) <span class="ช่วยเหลือบล็อก"> <strong>{{ $errors->first('g-recaptcha-response') }}</strong> </span> @endif
เมื่อใช้ฟังก์ชันการทดสอบ Laravel คุณจะต้องจำลองการตอบสนองสำหรับองค์ประกอบแบบฟอร์ม captcha
ดังนั้นสำหรับการทดสอบรูปแบบใดๆ ที่เกี่ยวข้องกับ captcha คุณสามารถทำได้โดยการเยาะเย้ยพฤติกรรมของส่วนหน้า:
// ป้องกันข้อผิดพลาดในการตรวจสอบความถูกต้องบน captchaNoCaptcha::shouldReceive('verifyResponse') -> ครั้งหนึ่ง() ->andReturn(true);// ระบุอินพุตที่ซ่อนอยู่สำหรับการตรวจสอบความถูกต้อง 'จำเป็น' ของคุณ NoCaptcha::shouldReceive('display') ->zeroOrMoreTimes() ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');
จากนั้นคุณสามารถทดสอบส่วนที่เหลือของแบบฟอร์มของคุณได้ตามปกติ
เมื่อใช้การทดสอบ HTTP คุณสามารถเพิ่ม g-recaptcha-response
ให้กับเนื้อหาคำขอสำหรับการตรวจสอบความถูกต้อง 'จำเป็น':
// ป้องกันข้อผิดพลาดในการตรวจสอบความถูกต้องบน captchaNoCaptcha::shouldReceive('verifyResponse') -> ครั้งหนึ่ง() ->andReturn(true);// คำขอ POST โดยมีเนื้อหาคำขอรวมถึง g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','name' => 'จอห์น','email' => '[email protected]','รหัสผ่าน' => '123456','password_confirmation' => '123456', -
ตัวอย่างการชำระเงินด้านล่าง:
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = ใหม่ AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (! Empty($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));ทางออก(); }?><รูปแบบการกระทำ="?" method="POST"><?php echo $captcha->display(); ?><button type="submit">ส่ง</button> </form><?php echo $captcha->renderJs(); -
https://github.com/anhskohbo/no-captcha/pulls