synthesisone / mycaptcha
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.
0.1
2020-03-11 12:07 UTC
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.