No CAPTCHA reCAPTCHA For Laravel.
PHP
Latest commit f5befe2 Jan 1, 2017 @seltix5 seltix5 committed with Update for multiple app('captcha')->display() on the same page (#57)
* Update for multiple app('captcha')->display() on the same page

registerin the service provider with singleton instead of bind will return always the same object per page load. with this methos is possible to insert a control variable in the class and use it to 

* Upda for multiple noCaptcha on the same page

ading this var control will permit to request the api only once. this will work with the singleton register on te serviceprovider file.

* Update NoCaptcha.php

* Update NoCaptcha.php

README.md

No CAPTCHA reCAPTCHA Build Status

recaptcha_anchor 2x

For Laravel 4 use v1 branch.

Installation

composer require anhskohbo/no-captcha

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 (without brackets):

NOCAPTCHA_SECRET=[secret-key]
NOCAPTCHA_SITEKEY=[site-key]

Usage

Display reCAPTCHA
{!! app('captcha')->display(); !!}

With custom attributes and language support:

{!! app('captcha')->display($attributes = [], $lang = null); !!}
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:

1) Setup NoCaptcha facade in config/app.conf

'NoCaptcha' => 'Anhskohbo\NoCaptcha\Facades\NoCaptcha'

2) 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>

Contribute

https://github.com/anhskohbo/no-captcha/pulls