Laravel 5.*使用Captcha扩展包为应用生成验证码以及运用实例
Song •
2725 次浏览 •
0个评论 •
2017年07月21日
使用 Captcha 扩展包 为 Laravel 5 应用生成验证码 Laravel Captcha
1、需求与安装
我们通过 Composer 安装 Captcha 扩展包:
composer require mews/captcha
注:
要使用GD库,需要安装GD库,否则无法生成验证码图片,有时候本地测试可以,线上无法生成验证码,需要注意一下是否安装GD库,Windows中使用该扩展包还需要安装 GD2 扩展(在php.ini
中取消php_gd2.dll
前面的注释)。
2、配置
使用Captcha
服务提供者之前还需要在config/app.php
中注册服务提供者:
'providers' => [
// ...
Mews\Captcha\CaptchaServiceProvider::class,
]
同时注册下相应门面:
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
如果要使用自定义的配置,还可以发布配置文件到config目录:
php artisan vendor:publish
会在config目录下生成captcha.php
:
return [
'default' => [
// 验证码长度,几位数
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
],
// ...
];
3、使用示例
// app/Http/routes.php
Route::any('captcha-test', function()
{
if (Request::getMethod() == 'POST')
{
$rules = ['captcha' => 'required|captcha'];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
echo '<p style="color: #ff0000;">Incorrect!</p>';
}
else
{
echo '<p style="color: #00ff30;">Matched :)</p>';
}
}
$form = '<form method="post" action="captcha-test">';
$form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
$form .= '<p>' . captcha_img() . '</p>';
$form .= '<p><input type="text" name="captcha"></p>';
$form .= '<p><button type="submit" name="check">Check</button></p>';
$form .= '</form>';
return $form;
});
显示效果如下:
如果要返回原生图片,可以调用这个函数:
captcha();
// 或者
Captcha::create();
如果要返回URL:
captcha_src();
//或者
Captcha::src();
如果要返回HTML:
captcha_img();
我们这个示例中使用的就是这个函数,或者调用Captcha
门面上的方法:
Captcha::img();
要使用配置文件captcha.php中不同的配置项,可以这样调用:
captcha_img('flat');
Captcha::img('inverse');
4、如何设置点击刷新
<img title="点击刷新" src="{{ captcha_src() }}" onclick="this.src='/captcha/default?'+Math.random();"/>
这样,点击就会自动刷新验证码了
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
热门文章
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
-
Mac 安装mysql并且配置密码 2024-11-20
-
阿里云不同账号(跨账号)ECS服务器同地域如何实现免费内网互通? 2024-11-12
-
electron安装使用better-sqlite3并解决NODE_MODULE_VERSION xxx. This version of Node.js requires 2024-11-06
-
Zerotier+Moon+Nginx实现内网穿透搭建网站 2024-08-23
更多相关好文