kristian / no-captcha
No CAPTCHA reCAPTCHA For Laravel.
This package's canonical repository appears to be gone and the package has been frozen as a result.
2.2
2016-08-04 07:23 UTC
Requires
- php: >=5.6.4
- illuminate/support: 5.0.*|5.1.*|5.2.*|5.3.*
README
For Laravel 4 use v1 branch.
Installation
Add the following line to the require
section of composer.json
:
{ "require": { "anhskohbo/no-captcha": "2.*" } }
Run composer update
.
Laravel 5
Setup
Add ServiceProvider to the providers array in app/config/app.php
.
Anhskohbo\NoCaptcha\NoCaptchaServiceProvider::class,
Configuration
Add NOCAPTCHA_SECRET
and NOCAPTCHA_SITEKEY
in .env file:
NOCAPTCHA_SECRET=[secret-key]
NOCAPTCHA_SITEKEY=[site-key]
Usage
Display reCAPTCHA
{!! app('captcha')->display(); !!}
Validation
Add 'g-recaptcha-response' => 'required|captcha'
to rules array.
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha' ]);
Testing
When using the Laravel Testing functionality, you will need to mock out the response for the captcha form element. To do this:
- Setup NoCaptcha facade in config/app.conf
'NoCaptcha' => 'Anhskohbo\NoCaptcha\Facades\NoCaptcha'
- For any form tests involving the captcha, you can then mock the facade behaviour:
// prevent validation error on captcha NoCaptcha::shouldReceive('verifyResponse') ->once() ->andReturn(true); // provide hidden input for your 'required' validation NoCaptcha::shouldReceive('display') ->zeroOrMoreTimes() ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');
You can then test the remainder of your form as normal.
Without Laravel
Checkout example below:
<?php require_once "vendor/autoload.php"; $secret = ''; $sitekey = ''; $captcha = new \Anhskohbo\NoCaptcha\NoCaptcha($secret, $sitekey); if ( ! empty($_POST)) { var_dump($captcha->verifyResponse($_POST['g-recaptcha-response'])); exit(); } ?> <form action="?" method="POST"> <?php echo $captcha->display(); ?> <button type="submit">Submit</button> </form>