在laravel中通过第三方扩展包 mews/captcha 作为基础来实现 Laravel 中的验证码功能
两种安装方法:
第一种:在项目根目录下执行
composer require gregwar/captcha
第二种:或者在composer.json 的 requier 中添加 "gregwar/captcha": "1.*"
然后执行composer update即可
"require": {
...省略...,
...省略...,
...省略...,
"gregwar/captcha": "1.*"
},
使用方法:
通过composer安装后默认在项目的vendor (存放第三方类库)下
在控制器中通过use 引入
use Gregwar\Captcha\CaptchaBuilder;
use Gregwar\Captcha\PhraseBuilder;
定义一个路由以便访问
//验证码路由
Route::get('admin/captcha','Admin\LoginController@captcha');
控制器中可以通过实例化PhraseBuilder,调用相关方法生成二维码图片
//验证码生成
public function captcha()
{
$phrase = new PhraseBuilder;
// 设置验证码位数
$code = $phrase->build(4);
// 生成验证码图片的Builder对象,配置相应属性
$builder = new CaptchaBuilder($code, $phrase);
// 设置背景颜色
$builder->setBackgroundColor(220, 210, 230);
$builder->setMaxAngle(25);
$builder->setMaxBehindLines(1);//设置背景前面线条
$builder->setMaxFrontLines(1);//设置背景后面线条
// 可以设置图片宽高及字体
$builder->build($width = 130, $height = 50, $font = null);
// 获取验证码的内容
$phrase = $builder->getPhrase();
// 把内容存入session
Session::flash('code', $phrase);//需要在头部 use Illuminate\Support\Facades\Session;引入session类
// 生成图片
header("Cache-Control: no-cache, must-revalidate");
header("Content-Type:image/jpeg");
$builder->output();
}
前端html代码:
<input name="code" style="width:195px;float:left" lay-verify="code" placeholder="验证码" type="text" class="layui-input">
<a onclick="javascript:re_captcha();">
<img style="float:right" src="{{URL('admin/captcha') }}" alt="" id="codeimg">
</a>
前端js代码:
<script type="text/javascript">
// 点击更换验证码
function re_captcha() {
$url = "{{ URL('admin/captcha') }}";
$url = $url + "?a=" + Math.random();
document.getElementById('codeimg').src = $url;
$('#codeimg').attr('src',$url);
}
</script>
最后前端和后端可以加上表单验证。