Stars: 2275
Forks: 419
Pull Requests: 85
Issues: 187
Watchers: 58
Last Updated: 2023-07-15 15:08:31
Captcha for Laravel 5/6/7/8/9/10
License: MIT License
Languages: PHP, Makefile
A simple Laravel 5/6 service provider for including the Captcha for Laravel.
for Laravel 4 Captcha for Laravel Laravel 4
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 5) in your
project's composer.json.
{
"require": {
"laravel/framework": "5.0.*",
"mews/captcha": "~2.0"
},
"minimum-stability": "stable"
}or
Require this package with composer:
composer require mews/captcha
Update your packages with composer update or install with composer install.
In Windows, you'll need to include the GD2 DLL php_gd2.dll in php.ini. And you also need include php_fileinfo.dll and php_mbstring.dll to fit the requirements of mews/captcha's dependencies.
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 config/app.php and register the Captcha Service Provider.
'providers' => [
// ...
'Mews\Captcha\CaptchaServiceProvider',
]for Laravel 5.1+
'providers' => [
// ...
Mews\Captcha\CaptchaServiceProvider::class,
]Find the aliases key in config/app.php.
'aliases' => [
// ...
'Captcha' => 'Mews\Captcha\Facades\Captcha',
]for Laravel 5.1+
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]To use your own settings, publish config.
$ php artisan vendor:publish
config/captcha.php
return [
'default' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
'math' => true, //Enable Math Captcha
'expire' => 60, //Captcha expiration
],
// ...
];To disable the captcha validation use CAPTCHA_DISABLE environment variable. e.g. .env config:
CAPTCHA_DISABLE=true // [your site path]/Http/routes.php
Route::any('captcha-test', function() {
if (request()->getMethod() == 'POST') {
$rules = ['captcha' => 'required|captcha'];
$validator = validator()->make(request()->all(), $rules);
if ($validator->fails()) {
echo '<p style="color: #ff0000;">Incorrect!</p>';
} else {
echo '<p style="color: #00ff30;">Matched :)</p>';
}
}
$form = '<form method="post" action="captcha-test">';
$form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
$form .= '<p>' . captcha_img() . '</p>';
$form .= '<p><input type="text" name="captcha"></p>';
$form .= '<p><button type="submit" name="check">Check</button></p>';
$form .= '</form>';
return $form;
});You get key and img from this url
http://localhost/captcha/api/math
and verify the captcha using this method:
//key is the one that you got from json response
// fix validator
// $rules = ['captcha' => 'required|captcha_api:'. request('key')];
$rules = ['captcha' => 'required|captcha_api:'. request('key') . ',math'];
$validator = validator()->make(request()->all(), $rules);
if ($validator->fails()) {
return response()->json([
'message' => 'invalid captcha',
]);
} else {
//do the job
}captcha();or
Captcha::create();captcha_src();or
Captcha::src('default');
captcha_img();or
Captcha::img();captcha_img('flat');
Captcha::img('inverse');etc.
Based on Intervention Image
^_^