gregwar/captcha

验证码生成器

v1.2.1 2023-09-26 13:45 UTC

README

Captchas examples paypal

安装

使用composer

{
    ...
    "require": {
        "gregwar/captcha": "1.*"
    }
}

使用

您可以使用CaptchaBuilder创建验证码

<?php

use Gregwar\Captcha\CaptchaBuilder;

$builder = new CaptchaBuilder;
$builder->build();

然后将其保存到文件中

<?php

$builder->save('out.jpg');

或者直接输出

<?php

header('Content-type: image/jpeg');
$builder->output();

或者在HTML页面中直接内嵌

<img src="<?php echo $builder->inline(); ?>" />

您将能够获取代码并与用户输入进行比较

<?php

// Example: storing the phrase in the session to test for the user 
// input later
$_SESSION['phrase'] = $builder->getPhrase();

您可以与用户输入的短语进行比较

if($builder->testPhrase($userInput)) {
    // instructions if user phrase is good
}
else {
    // user phrase is wrong
}

API

您可以使用以下函数

  • __construct($phrase = null),使用给定的短语构建构建器,如果短语为null,则将生成一个随机短语
  • getPhrase(),允许您获取短语内容
  • setDistortion($distortion),启用或禁用扭曲,在build()之前调用
  • isOCRReadable(),如果可以使用ocrad软件读取OCR,则返回true,您需要启用shell_exec,安装imagemagick和ocrad
  • buildAgainstOCR($width = 150, $height = 40, $font = null),构建代码,直到ocrad无法读取它
  • build($width = 150, $height = 40, $font = null),使用给定的$width、$height和$font构建代码。默认情况下,将从库中随机选择一个字体
  • save($filename, $quality = 80),将验证码保存到JPEG文件中,文件名为$filename,质量为给定的质量
  • get($quality = 80),返回JPEG数据
  • output($quality = 80),直接将JPEG代码输出到浏览器
  • setBackgroundColor($r, $g, $b),设置背景颜色以强制它(这将禁用许多效果,不推荐使用)
  • setBackgroundImages(array($imagepath1, $imagePath2)),设置自定义背景图片作为验证码背景。建议在传递自定义背景图片时禁用图像效果(ignore_all_effects)。从传递的列表中选择随机图像,必须传递图像文件的完整路径。
  • setInterpolation($interpolate),启用或禁用插值(默认启用),禁用它将更快,但图像将看起来更丑
  • setIgnoreAllEffects($ignoreAllEffects),禁用在验证码图像上的所有效果。建议在传递自定义背景图片作为验证码时使用。
  • testPhrase($phrase),如果给定的短语良好,则返回true
  • setMaxBehindLines($lines),设置代码后面的最大行数
  • setMaxFrontLines($lines),设置代码前面的最大行数

如果您想更改字符数,可以直接使用额外参数调用短语构建器

use Gregwar\Captcha\CaptchaBuilder;
use Gregwar\Captcha\PhraseBuilder;

// Will build phrases of 3 characters
$phraseBuilder = new PhraseBuilder(4);

// Will build phrases of 5 characters, only digits
$phraseBuilder = new PhraseBuilder(5, '0123456789');

// Pass it as first argument of CaptchaBuilder, passing it the phrase
// builder
$captcha = new CaptchaBuilder(null, $phraseBuilder);

您也可以直接将所需的短语传递给构建器

// Building a Captcha with the "hello" phrase
$captcha = new CaptchaBuilder('hello');

完整示例

如果您想查看示例,可以查看demo/form.php,它使用demo/session.php渲染验证码并在提交后进行检查

Symfony Bundle

您可以在以下存储库中查看Symfony 2打包此验证码生成器的Bundle:https://github.com/Gregwar/CaptchaBundle

Yii2 扩展

您可以使用以下扩展与Yii2框架集成:https://github.com/juliardi/yii2-captcha

许可证

此库受MIT许可证保护,请参阅LICENSE文件