zablose/captcha

Simple captcha with optional goodies for Laravel.

4.1.0 2025-07-21 12:51 UTC

This package is auto-updated.

Last update: 2025-07-21 12:55:10 UTC


README

Captcha

Simple captcha with optional goodies for Laravel.

Installation

composer require zablose/captcha

Usage with Laravel

New Route & Captcha Types

Check new route is working, by visiting /captcha or /captcha/{type}.

Captcha Type Dev Link
default /captcha/default
small /captcha/small
invert /captcha/invert
sharpness /captcha/sharpness
blur /captcha/blur
contrast /captcha/contrast
no-angle /captcha/no-angle
bg-color /captcha/bg-color

Look at the config file for more details.

Login Form

If standard auth is in use, add captcha to your login form like in the login.blade.php template.

Validation

If standard auth is in use, overwrite method validateLogin like in LoginController class.

Basic Usage

In case you are not a happy Laravel user, you may still use this package.

Create captcha, add details to the session and output the image.

A code may look like:

<?php

require __DIR__ . '/../vendor/autoload.php';

use Zablose\Captcha\Captcha;
use Zablose\Captcha\Config;
use Zablose\Captcha\Image;

$captcha = new Captcha(
    new Image(
        (new Config())->update(['invert' => true, 'width' => 220])
    )
);

$data = [
    'captcha' => [
        'sensitive' => $captcha->isSensitive(),
        'hash' => $captcha->hash(),
    ],
];

// Add $data to the session.

echo $captcha->toPng();

To check captcha use:

<?php

    use Zablose\Captcha\Captcha;

    // ...

    Captcha::verify('captcha', 'hash');

Feel the joy and happiness!

Development

Check submodule readme for more details about development environment used.

Hosts

Append to /etc/hosts.

127.0.0.26       captcha.zdev

Quick Start

$ git clone -b 'dev' --single-branch --depth 1 https://github.com/zablose/captcha.git captcha
$ cd captcha
$ git submodule update --init

# Copy env file, then ammend it to your needs.
$ cp .env.example .env

$ docker compose up -d

# To "enter" container, using Bash shell.
$ docker exec -u debian -it captcha-php-fpm bash

(captcha-php-fpm)$ phpunit