omranjamal / real-captcha
PHP的高级验证码生成库
Requires
- php: >=5.3.0
- ext-gd: *
Conflicts
This package is not auto-updated.
Last update: 2024-09-14 18:58:27 UTC
README
一个使用PHP-GD扩展仅通过PHP生成验证码的PHP库。
RealCaptcha遵循MIT许可证。访问项目主页获取更多信息。
注意:此代码仍处于Beta阶段,可能存在许多错误...
注意:此处包含的字体并非由代码作者创建或拥有,但它们的许可证是开源的、商业友好的,并允许重新分发,请自行检查。
##功能
-
自定义字体
-
可定制颜色
-
支持4种不同的验证码文本源
-
输入
-
自定义生成函数
您可以定义一个自定义函数,用于生成验证码中应包含的文本。 -
随机文本生成器
生成由字母和数字组成的随机字符串。 -
字典文件
可以使用任何包含空格分隔单词的文件作为字典文件来选择单词。
-
-
验证码图像压缩
-
3种不同的输出格式(jpg,png,gif)
-
输出位置
- 浏览器
- 文件
- 返回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值的数值数组。
高级用法
###设置背景和文字颜色
$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()
方法之前完成的,该方法中您打算使用自定义函数。
####示例
$captcha = new omranjamal\RealCaptcha\RealCaptcha(array( "source" => realCaptcha::uFUNCTION )); $captcha->textFunction(function(){ return array("EXAMPLE","FUNCTION"); }); $captcha->generate()->output("jpg");
字体
- swirled2
- Seraphim Font
- Potassium Scandal
- RattyTatty
- Quick End Jerk
- Zero & Zero Is
- Previewance
- Playdough
- Paper Cut
- Nervous Rex
- Lilac Malaria
- Eraser
- Edo
- CarbonType
- Boston Traffic
- 1942 report