emotionloop / visualcaptcha
PHP库,用于visualCaptcha。仍然需要您拥有前端伴侣。
0.0.8
2017-03-09 11:08 UTC
Requires
- php: >=5.3
- zendframework/zend-cache: ^2.0.3
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 15:11:15 UTC
README
visualCaptcha-packagist
visualCaptcha后端服务的Packagist composer包
使用Composer安装
您需要安装PHP和composer。
composer install emotionloop/visualcaptcha
运行测试
您需要安装PHPUnit并运行以下命令
composer install && phpunit tests
使用方法
初始化
您需要初始化一个session以供visualCaptcha注入所需的数据。您将需要这个变量来启动和验证visualCaptcha。
session_start();// Only needed once, at the beginning of your PHP files.
$session = new \visualCaptcha\Session( $namespace );
在哪里
$namespace
是可选的。它是一个字符串,默认为'visualcaptcha'。如果您在同一个页面上使用多个visualCaptcha实例,则需要特别设置此变量,以便代码可以识别验证来自哪个实例。
使用缓存
您可以使用后端Zend-Cache库选项将图像存储在缓存中并避免I/O。您需要在构造函数中传递选项参数,如https://docs.zendframework.com/zend-cache/storage/adapter/中所述。默认情况下它是禁用的,您需要在构造函数的第五个参数中传递true。
$options = array(
'adapter' => array(
'name' => 'memory',
'options' => array('ttl' => 3600,
'namespace' => "captcha-service"),
),
'plugins' => array(
'exception_handler' => array('throw_exceptions' => false),
),
);
$captchaWithCache = new \visualCaptcha\Captcha( $this->session,null,null,null, true,$options);
设置前端路由
您还需要为/start/:howmany
、/image/:index
和/audio/:index
设置路由。这些通常看起来像
// Populates captcha data into session object
// -----------------------------------------------------------------------------
// @param howmany is required, the number of images to generate
$app->get( '/start/:howmany', function( $howMany ) use( $app ) {
$captcha = new \visualCaptcha\Captcha( $app->session );
$captcha->generate( $howMany );
$app->response[ 'Content-Type' ] = 'application/json';
echo json_encode( $captcha->getFrontEndData() );
} );
// Streams captcha images from disk
// -----------------------------------------------------------------------------
// @param index is required, the index of the image you wish to get
$app->get( '/image/:index', function( $index ) use( $app ) {
$captcha = new \visualCaptcha\Captcha( $app->session );
if ( ! $captcha->streamImage(
$app->response,
$index,
$app->request->params( 'retina' )
) ) {
$app->pass();
}
} );
// Streams captcha audio from disk
// -----------------------------------------------------------------------------
// @param type is optional and defaults to 'mp3', but can also be 'ogg'
$app->get( '/audio(/:type)', function( $type = 'mp3' ) use( $app ) {
$captcha = new \visualCaptcha\Captcha( $app->session );
if ( ! $captcha->streamAudio( $app->response, $type ) ) {
$app->pass();
}
} );
验证图像/音频
这通常是它的样子
$session = new \visualCaptcha\Session();
$captcha = new \visualCaptcha\Captcha( $session );
$frontendData = $captcha->getFrontendData();
// If an image field name was submitted, try to validate it
if ( $imageAnswer = $app->request->params( $frontendData[ 'imageFieldName' ] ) ) {
if ( $captcha->validateImage( $imageAnswer ) ) {
// Image was valid.
} else {
// Image was submitted, but wrong.
}
// Otherwise an audio field was submitted, so try to validate it
} else if ( $audioAnswer = $app->request->params( $frontendData[ 'audioFieldName' ] ) ) {
if ( $captcha->validateAudio( $audioAnswer ) ) {
// Audio answer was valid.
} else {
// Audio was submitted, but wrong.
}
} else {
// Apparently no fields were submitted, so the captcha wasn't filled.
}
visualCaptcha/Session属性
$namespace
,String —— 这是一个私有变量,将保存每个visualCaptcha实例的命名空间。默认为'visualcaptcha'。
visualCaptcha/Session方法
__construct( $namespace )
—— 初始化visualCaptcha session。clear()
—— 将清除当前命名空间下的session。get( $key )
—— 将返回session的$key
对应的值。set( $key, $value )
—— 为session的$key
设置$value
。
visualCaptcha/Captcha属性
$session
,Object —— 这个对象将引用session对象。它将有.visualCaptcha.images
、.visualCaptcha.audios
、.visualCaptcha.validImageOption
和.visualCaptcha.validAudioOption
。$assetsPath
,资源路径。默认情况下,它将是'./assets'$imageOptions
,所有图像选项。这些可以通过addImageOptions( )或replaceImageOptions( )轻松重写或扩展。默认情况下,它们使用./images.json文件填充$audioOptions
,所有音频选项。这些可以通过addAudioOptions( )或replaceAudioOptions( )轻松重写或扩展。默认情况下,它们使用./audios.json文件填充
visualCaptcha/Captcha方法
您可以在代码本身中找到更多文档,但这里有一个简单的参考列表。
__construct( $session, $assetsPath = null, $defaultImages = null, $defaultAudios = null )
—— 初始化visualCaptcha对象。generate( $numberOfOptions = 5 )
—— 将在$numberOfOptions
内生成一个新的有效选项。streamAudio( $headers, $fileType )
—— 流音频文件。streamImage( $headers, $index, $isRetina )
—— 根据session visualCaptcha images数组中的索引流图像文件。getFrontendData()
—— 获取前端使用的数据。getValidImageOption()
—— 获取当前有效的imageOption。getValidAudioOption()
—— 获取当前有效的audioOption。validateImage( $sentOption )
—— 验证发送的图像值与有效的imageOption。validateAudio( $sentOption )
—— 验证发送的音频值与有效的audioOption。getImageOptions()
—— 返回生成的图像选项。getImageOptionAtIndex( $index )
—— 返回索引处的生成图像选项。getAudioOption()
—— getValidAudioOption的别名。getAllImageOptions()
—— 返回所有图像选项。getAllAudioOptions()
—— 返回所有音频选项。
许可证
查看许可证文件。