Search by

synthesisone / mycaptcha

Islam_Gagiev

There is no license information available for the latest version (0.1) of this package.

Simple GD-based CAPTCHA generator and verifier for PHP. Session-backed, no temporary files written to disk.

Package info

github.com/SynthesisOne/MyCaptcha

Homepage

Issues

pkg:composer/synthesisone/mycaptcha

Statistics

Installs: 6

Dependents: 0

Suggesters: 0

Stars: 0

0.1 2020-03-11 12:07 UTC

This package is not auto-updated.

Last update: 2026-11-01 04:09:00 UTC


README

Простая PHP-библиотека для генерации и проверки CAPTCHA на базе GD. Изображение отдаётся как base64 data URI, код ответа хранится в PHP-сессии — никаких временных файлов на диске.

Требования

  • PHP >= 7.4
  • Расширения gd и session

Установка

composer require synthesisone/mycaptcha

Использование

require 'vendor/autoload.php';

use mycaptcha\MyCaptcha;

session_start();

$dataUri = MyCaptcha::generate();
echo '<img src="' . $dataUri . '" alt="captcha">';

Проверка ответа пользователя, например при обработке формы:

use mycaptcha\MyCaptcha;

session_start();

if (MyCaptcha::verify($_POST['captcha'] ?? '')) {
    // код верный
} else {
    // код неверный или истёк срок действия
}

verify() одноразовый: после вызова сохранённый код удаляется из сессии независимо от результата, поэтому один и тот же код нельзя проверить дважды.

Сигнатуры

MyCaptcha::generate(int $length = 4, int $ttl = 300, ?string $font = null): string
MyCaptcha::verify(string $answer, bool $caseSensitive = false): bool
  • $length — длина кода (по умолчанию 4 символа);
  • $ttl — время жизни кода в секундах (по умолчанию 300);
  • $font — имя файла шрифта из папки fonts/ (по умолчанию Roboto-Black.ttf);
  • $caseSensitive — учитывать регистр символов при проверке.

Что изменилось по сравнению с предыдущей версией

  • Капча больше не сохраняется в файл (MyCaptcha/captcha/*.jpeg) — это было уязвимостью: сгенерированные коды оставались публично доступными файлами на сервере и никогда не удалялись. Теперь код живёт только в сессии, а изображение возвращается вызывающему коду напрямую.
  • Генерация случайных значений переведена с rand()/str_shuffle() на random_int() (криптостойкий генератор).
  • Добавлен MyCaptcha::verify() — раньше библиотека умела только сгенерировать капчу, но не могла проверить ответ.
  • Убраны глобальные define()-константы (вызывали PHP notice при повторном вызове в рамках одного запроса).
  • Из набора символов убраны визуально похожие 0/O/1/l/I.
  • Шрифт по умолчанию — Roboto-Black.ttf (Apache-2.0). arial.ttf оставлен в репозитории для обратной совместимости, но это проприетарный шрифт Microsoft — распространять его в открытом репозитории не стоит, рекомендуется удалить.
  • composer.json дополнен описанием, лицензией и требованиями к PHP/расширениям.

Лицензия

MIT — см. LICENSE.