amiralishabani / laravel-aash-captcha
A Laravel package for generating customizable image and audio CAPTCHAs.
Requires
- php: >=7.4
README
A customizable and lightweight CAPTCHA package for Laravel applications, designed to protect your forms from bots without relying on external services.
🧩 Installation
You can install the package via Composer:
composer require amiralishabani/laravel-aash-captcha
If you're using Laravel 10 or newer, the package will auto-discover. For older versions, you can add the service provider manually (not recommended).
🚀 Publishing Assets
To publish the configuration and assets (fonts, sounds, views), run:
php artisan vendor:publish --tag=aash-captcha
⚙️ Configuration
A configuration file aash-captcha.php
will be created in your config
directory. You can modify it to customize fonts, colors, noise level, route prefix, and more.
🧪 Usage
You can use the captcha image in your blade view like this:
<form method="POST" action="/your-form-handler"> @csrf <div> <img src="{{ route('aash.captcha.image') }}" alt="CAPTCHA"> <button type="button" onclick="refreshCaptcha()">Reload</button> </div> <input type="text" name="captcha" placeholder="Enter CAPTCHA"> <button type="submit">Submit</button> </form> <script> function refreshCaptcha() { const img = document.querySelector('img[alt=CAPTCHA]'); img.src = '{{ route('aash.captcha.image') }}?t=' + Date.now(); } </script>
In your form handler (controller or route), validate the captcha input:
use AashCaptcha\Facades\AashCaptcha; public function submit(Request $request) { if (!AashCaptcha::check($request->input('captcha'))) { return back()->withErrors(['captcha' => 'Invalid CAPTCHA'])->withInput(); } // Proceed with your form logic... }
🧰 License
The MIT License (MIT). Please see License File for more information.