omranjamal/real-captcha

PHP的高级验证码生成库

v1.0-patch 2014-12-02 18:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:27 UTC


README

一个使用PHP-GD扩展仅通过PHP生成验证码的PHP库。
RealCaptcha遵循MIT许可证。访问项目主页获取更多信息。

注意:此代码仍处于Beta阶段,可能存在许多错误...
注意:此处包含的字体并非由代码作者创建或拥有,但它们的许可证是开源的、商业友好的,并允许重新分发,请自行检查

Example Image

##功能

  • 自定义字体

  • 可定制颜色

  • 支持4种不同的验证码文本源

    • 输入

    • 自定义生成函数
      您可以定义一个自定义函数,用于生成验证码中应包含的文本。

    • 随机文本生成器
      生成由字母和数字组成的随机字符串。

    • 字典文件
      可以使用任何包含空格分隔单词的文件作为字典文件来选择单词。

  • 验证码图像压缩

  • 3种不同的输出格式(jpgpnggif

  • 输出位置

    • 浏览器
    • 文件
    • 返回GD资源句柄

##安装最简单的方法是使用Composer。只需在您的composer.json文件中添加如下要求:

{
    "require":{
        "omranjamal/real-captcha":"dev-master"
    }
}

要将它包含到您的项目中,请包含composer自动加载器,并在omranjamal\RealCaptcha命名空间下创建新的RealCaptcha类对象。

include 'vendor/autoload.php';
$captcha = new omranjamal\RealCaptcha\RealCaptcha();

或者,您也可以手动克隆或下载此存储库,并直接将类文件包含进来,创建omranjamal\RealCaptcha\RealCaptcha的对象。

##基本用法

###基本

$captcha = new omranjamal\RealCaptcha\RealCaptcha();
$captcha->generate()->output("jpg");

###配置这三个代码在JPG格式下以相似的方式将验证码输出到浏览器。

初始化时

$realCaptcha = new omranjamal\RealCaptcha\RealCaptcha(array(
    "height" = 200,
    "width" = 500,
    "number_of_words" = 2
));

$captcha = $realCaptcha->generate();
$captcha->output("jpg");

您在初始化时提供的设置将在每次调用generate()方法时使用。

使用set()方法

$realCaptcha = new omranjamal\RealCaptcha\RealCaptcha();

$realCaptcha->set(array(
    "height" = 200,
    "width" = 500,
    "number_of_words" = 2
));

$captcha = $realCaptcha->generate();
$captcha->output("jpg");

使用set()方法定义的设置将覆盖您在初始化时提供的设置,并在每次调用generate()方法时使用。

生成时

$realCaptcha = new omranjamal\RealCaptcha\RealCaptcha();

$captcha = $realCaptcha->generate(array(
    "height" = 200,
    "width" = 500,
    "number_of_words" = 2
));
$captcha->output("jpg");

generate()方法将给予传递给它作为参数的设置最高优先级。这些设置将在验证码生成完成后被遗忘。

###处理输出

$realCaptcha = new omranjamal\RealCaptcha\RealCaptcha();
$captcha = $realCaptcha->generate();

generate()方法返回一个输出对象,它有两个方法和许多属性。

####方法

  • file( path, format, quality):将验证码写入文件
  • output( format, quality):设置适当的图像格式头,并将图像数据发送到浏览器

####属性

  • text:包含验证码图像中出现的单词字符串,用空格分隔
  • array:包含验证码图像中出现的单词数组。

####示例 此示例生成一个验证码,并将验证码文本存储在会话变量中,以便稍后匹配。同时将验证码图像输出到浏览器,并将其保存到名为 example.jpg 的文件中。

session_start();
$realCaptcha = new omranjamal\RealCaptcha\RealCaptcha();

$captcha = $realCaptcha->generate();
$_SESSION["captcha_text"] = $captcha->text;
$captcha->output("jpg",100);
$captcha->file("example.jpg","jpg",100);

###将验证码保存到文件 要将验证码保存到文件,可以使用 file(文件路径,格式,质量) 方法。

$captcha = $realCaptcha->generate();
$captcha->file("file.jpg" ,"jpg", 90);

设置完整列表

  • height(正整数):生成验证码图像的高度。
  • width(正整数):生成验证码图像的宽度。
  • source(realCaptcha源类型常量):验证码文本的来源。
    • omranjamal\RealCaptcha\RealCaptcha::INPUT:在调用 generate() 方法时需要传递验证码文本。
    • omranjamal\RealCaptcha\RealCaptcha::RANDOM:生成字母和数字的随机字符串。
    • omranjamal\RealCaptcha\RealCaptcha::DICTIONARY:从字典文件中随机选择单词。
    • omranjamal\RealCaptcha\RealCaptcha::uFUNCTION:需要设置一个自定义函数,该函数返回验证码文本。
  • dictionary_file(有效文件路径):字典文件的路径。
  • fonts_dir(有效目录路径):包含所有字体的目录的路径。
  • number_of_words(正整数):验证码图像应包含的单词数量。
  • random_length(正整数):随机生成字符串的长度。
  • background_color(realCaptcha变量_grey设置常量或数组)
    • omranjamal\RealCaptcha\RealCaptcha::GREY_VARIABLE:随机选择从白色到浅灰的阴影。
    • array( int, int, int):包含RGB值的数值数组。
  • text_color(数组):包含RGB值的数值数组。

高级用法

###设置背景和文字颜色

Colored Example

$captcha = new omranjamal\RealCaptcha\RealCaptcha(array(
    "background_color" => array(255,0,0), //Bright Red
    "text_color" => array(255,255,255) //White
));

$captcha->generate()->output("jpg");

###使用直接输入 这两种代码都是正确的,但以不同的方式工作,并且设置在运行周期中持续不同比例的时间。

初始化时设置

$captcha = new omranjamal\RealCaptcha\RealCaptcha(array(
    "source" => realCaptcha::INPUT
));

$captcha->generate("Text")->output("jpg");

在生成器中设置

$captcha = new omranjamal\RealCaptcha\RealCaptcha();
$captcha->generate("Text", array("source" => realCaptcha::INPUT))->output("jpg");

将字符串或数组作为输入传递到生成器方法是完全可行的,因此以下两行代码都是有效的。

$captcha->generate("Text")->output("jpg");
$captcha->generate(array("example","text"))->output("jpg");

###使用自定义文本生成函数 与 直接输入 不同,自定义函数不能在 生成器 方法中设置和声明,自定义函数的使用必须在初始化设置中声明或通过 set() 方法声明,并且函数必须通过 textFunction() 方法作为第一个参数定义。所有这些都是在调用 generate() 方法之前完成的,该方法中您打算使用自定义函数。

Example Function

####示例

$captcha = new omranjamal\RealCaptcha\RealCaptcha(array(
    "source" => realCaptcha::uFUNCTION
));

$captcha->textFunction(function(){
    return array("EXAMPLE","FUNCTION");
});

$captcha->generate()->output("jpg");

字体

Liscense

RealCaptcha是在 MIT许可证 下发布的。有关更多信息,请访问项目 主页