n1ebieski / logic-captcha
Laravel 5 Logic Captcha Package
Installs: 334
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:package
Requires
- mews/captcha: ^3.0
README
A package-plugin extends Captcha for Laravel 5 by Muharrem ERİN for Laravel 5.
New features
- New option - customizable logic captcha (question -> answer1 or answer2 ...)
- Support for multiple captcha on single page by Id (only for Base64 method)
- A simple asset in jquery to reload captcha (both method - Base64 and Src by Controller)
Installation
- Install the package via Composer:
composer require n1ebieski/logic-captcha
- Publish the configuration file, resources and assets via artisan:
php artisan vendor:publish --provider="N1ebieski\LogicCaptcha\Providers\LogicCaptchaServiceProvider"
Preview
Configuration
config/logic_captcha.php
return [ 'default' => [ 'math' => false, 'logic' => true, 'width' => 300, 'height' => 80, ], 'logic' => [ 'questions' => [ 'Color of the sky?' => [ 'blue' ], 'Highest mountain on Earth?' => [ 'Mount Everest', 'MountEverest' ], 'Natural enemy of the cat?' => [ 'dog', 'human', 'lol' ] ] ] ];
Example Usage
Simple example. Of course, I suggest using the form requests, route-controller-view pattern and assets minified by webpack.
use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; Route::any('captcha-test', function(Request $request) { 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 = '<p><b>Multi Captcha on one page by Base64</b></p>'; $form .= '<form method="post" action="captcha-test">'; $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">'; $form .= '<p><img src="' . captcha_base64(0) . '"></p>'; $form .= '<p><input type="hidden" value="0" name="captcha_id"></p>'; $form .= '<p><input type="text" name="captcha"></p>'; $form .= '<p><button type="submit">Check</button> <button class="reload_captcha_base64" type="button" data-route="' . route('captcha.base64', ['default']) . '">Reload</button></p>'; $form .= '</form>'; $form .= '<form method="post" action="captcha-test">'; $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">'; $form .= '<p><img src="' . captcha_base64(1) . '"></p>'; $form .= '<p><input type="hidden" value="1" name="captcha_id"></p>'; $form .= '<p><input type="text" name="captcha"></p>'; $form .= '<p><button type="submit">Check</button> <button class="reload_captcha_base64" type="button" data-route="' . route('captcha.base64', ['default']) . '">Reload</button></p>'; $form .= '</form>'; $form .= '<p><b>Single Captcha by Async Src Controller</b></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">Check</button> <button class="reload_captcha_img" type="button">Reload</button></p>'; $form .= '</form>'; $form .= '<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>'; $form .= '<script src="' . asset('js/vendor/logic-captcha/captcha_reload.js') . '"></script>'; return $form; });
Copyright and License
Base package Captcha for Laravel 5 was written by Muharrem ERİN.
Package Logic Captcha for Laravel 5 was written by Mariusz Wysokiński and is released under the MIT License.