Captcha for Laravel PHP Framework L4 and L5

dev-master 2015-09-11 01:11 UTC

This package is not auto-updated.

Last update: 2020-08-07 17:44:05 UTC


For Laravel 5 change to branch masterl5

It is just a copy of but maintained to serve Laravel framework

A simple Laravel framework service provider for including the Captcha for Laravel framework.




Note: This Script Requires GD extension to be installed

The Captcha Service Provider can be installed via Composer by requiring the mews/captcha package and setting the minimum-stability to dev (required for Laravel 4.1) in your project's composer.json.

    "require": {
        "laravel/framework": "4.*",
        "johntaa/captcha": "dev-master" 
    "minimum-stability": "dev"

Update your packages with composer update or install with composer install.


To use the Captcha Service Provider, you must register the provider when bootstrapping your Laravel application. There are essentially two ways to do this.

Find the providers key in app/config/app.php and register the Captcha Service Provider.

    'providers' => array(
        // ...

Find the aliases key in app/config/app.php.

    'aliases' => array(
        // ...
        'Captcha' => 'Johntaa\Captcha\Facades\Captcha',


To use your own settings, publish config.

$ php artisan config:publish johntaa/captcha

Example Usage

    // [your site path]/app/routes.php

    Route::any('/captcha-test', function()

        if (Request::getMethod() == 'POST')
            $rules =  array('captcha' => array('required', 'captcha'));
            $validator = Validator::make(Input::all(), $rules);
            if ($validator->fails())
                echo '<p style="color: #ff0000;">Incorrect!</p>';
                echo '<p style="color: #00ff30;">Matched :)</p>';

        $content = Form::open(array(URL::to(Request::segment(1))));
        $content .= '<p>' . HTML::image(Captcha::img(), 'Captcha image') . '</p>';
        $content .= '<p>' . Form::text('captcha') . '</p>';
        $content .= '<p>' . Form::submit('Check') . '</p>';
        $content .= '<p>' . Form::close() . '</p>';
        return $content;