miladshm / arcaptcha-laravel
Laravel Package for the ArCaptcha
Requires
- php: >=7.3
- arcaptcha/arcaptcha-php: ^1.0
- laravel/framework: >=8.0
Requires (Dev)
- orchestra/testbench: ^6.19
- squizlabs/php_codesniffer: ^3.6
Suggests
- mohammadv184/arcaptcha: PHP library for ArCaptcha
README
Laravel ArCaptcha Package
Laravel Package for the ArCaptcha
This package supports PHP 7.3+.
For PHP integration you can use mohammadv184/arcaptcha package.
List of contents
Installation
You can install the package via composer:
composer require arcaptcha/arcaptcha-laravel
Laravel 5.5 (or greater) uses package auto-discovery, so doesn't require you to manually add the Service Provider, but if you don't use auto-discovery ArCaptchaServiceProvider must be registered in config/app.php:
'providers' => [
...
Mohammadv184\ArCaptcha\Laravel\ArCaptchaServiceProvider::class,
];
You can use the facade for shorter code. Add ArCaptcha to your aliases:
'aliases' => [
...
'ArCaptcha' => Mohammadv184\ArCaptcha\Laravel\Facade\ArCaptcha::class,
];
Configuration
Publish package
Create config/arcaptcha.php configuration file using the following artisan command:
php artisan vendor:publish --provider="Mohammadv184\ArCaptcha\Laravel\ArCaptchaServiceProvider"
Set the environment
Open .env file and set ARCAPTCHA_SITE_KEY and ARCAPTCHA_SECRET_KEY:
# in your .env file
ARCAPTCHA_SITE_KEY=YOUR_API_SITE_KEY
ARCAPTCHA_SECRET_KEY=YOUR_API_SECRET_KEY
# Optional: Default returned value from verify function
# when there is an Network or any other unexpected issue.
ARCAPTCHA_VERIFY_EXCEPTION_VALUE=true
Customize error message
Before starting please add the validation message to resources/lang/[LANG]/validation.php file
return [
...
'arcaptcha' => 'Hey!!! :attribute is wrong!',
];
How to use
How to use ArCaptcha in Laravel.
Embed Script in Blade
Insert @arcaptchaScript blade directive before closing </head> tag.
You can also use ArCaptcha::getScript().
<!DOCTYPE html>
<html>
<head>
... @arcaptchaScript
</head>
</html>
Form setup
After you have to insert @arcaptchaWidget blade directive inside the form where you want to use the field arcaptcha-token.
You can also use ArCaptcha::getWidget().
Note : You can pass widget options into getWidget function or arcaptchaWidget directive like this : @arcaptchaWidget(['lang'=>'en'])
To see available options on widget see here
<form>
@csrf ... @arcaptchaWidget
<!-- OR -->
{!! ArCaptcha::getWidget() !!}
<input type="submit" />
</form>
Verify submitted data
Add arcaptcha to your rules
$validator = Validator::make(request()->all(), [
...
'arcaptcha-token' => 'arcaptcha',
]);
// check if validator fails
if($validator->fails()) {
...
$errors = $validator->errors();
}
Invisible mode example
Just try to pass size and callback option to getWidget function. Make sure to define callback function in global scope:
<form>
{!! ArCaptcha::getWidget([ 'size'=>'invisible','callback'=>'callback']) !!}
<input type="submit" />
<script>
function callback(token) {
// Challenge is solved! Just submit the form!
}
</script>
</form>
Credits
License
The MIT License (MIT). Please see License File for more information.
