Laravel验证码工具gregwar/captcha
来源:互联网 发布:淘宝去除模块间距代码 编辑:程序博客网 时间:2024/04/29 07:50
视频中作者把验证码直接放入了
laravel
自带的验证里面去了,
验证是在再带的login
方法里面处理
返回,刷新,并把原数据带回去
public function login(Request $request){ if (session('captcha') != $request->get('captcha')){ return redirect()->refresh()->withInput(); }}
Laravel验证码工具gregwar/captcha
Ps:gregwar/captcha在Composer下载排行中长居第一名榜位。好用的工具大家都推荐,这个验证码工具作者本人也在很多项目中运用到了。给大家推荐的同时分享点经验。
一、安装方法 1.在项目根目录下执行: composer require gregwar/captcha 2.在composer.json中添加: "require": { ... ... "gregwar/captcha": "1.*" }, 然后执行 composer update 这样安装就算完成了。
二、使用方法
1.命名空间引入
use Gregwar\Captcha\CaptchaBuilder; use Gregwar\Captcha\PhraseBuilder;
下面给大家一个完整的例子
路由定义(注意:该路由放在中间件外)
Route::get('/code/captcha/{tmp}', 'Admin\LoginController@captcha');
// 验证码生成 public function captcha($tmp) { $phrase = new PhraseBuilder; // 设置验证码位数 $code = $phrase->build(6); // 生成验证码图片的Builder对象,配置相应属性 $builder = new CaptchaBuilder($code, $phrase); // 设置背景颜色 $builder->setBackgroundColor(220, 210, 230); $builder->setMaxAngle(25); $builder->setMaxBehindLines(0); $builder->setMaxFrontLines(0); // 可以设置图片宽高及字体 $builder->build($width = 100, $height = 40, $font = null); // 获取验证码的内容 $phrase = $builder->getPhrase(); // 把内容存入session \Session::flash('code', $phrase); // 生成图片 此处要设置浏览器不要缓存 header("Cache-Control: no-cache, must-revalidate"); header("Content-Type:image/jpeg"); $builder->output(); }
模版案例
<input name="captcha" type="text" placeholder="验证码"> <a onclick="javascript:re_captcha();"> ![]({{ URL('/code/captcha/1') }}) </a>
Js点击换验证码
/*
此处url的规则是 /code/captcha/数字。我们可以在后面加一个随机参数,即可。后面的数字如果直接是小数,或者有小数,其实是找不到这个路由的
*/
<script type="text/javascript"> function re_captcha() { $url = "{{ URL('/code/captcha') }}"; $url = $url + "/1?a=" + Math.random(); document.getElementById('127ddf0de5a04167a9e427d883690ff6').src = $url; } </script> 如何验证(由于是案例 我只做最基础的验证) public function store(Request $request) { // $data = \Input::all(); //验证码验证 if ($data['captcha'] != \Session::get('code')) { return back() ->withErrors('验证码错误!'); }
执行登录的JS方法
//执行登录function login(form){ //发送ajax实现数据的添加 $.ajax({ url:"/login", type:"post", dataType:"json", async:true, data:$(form).serialize(), success:function(data){ if(data.id>0){ }else{ $("#error").css({"z-index":"100000","position":"absolute","top":"33%","left":"0","right":"0"}); $(".modal-body").html(data.info); $("#error").show(); $(".btn-primary").click(function(){ $("#error").hide(); }); } } }); return false;}
处理表单的store
public function store(Request $request){ $data = \Input::all(); if($data['captcha']!=\Session::get('code')){ return view("404")->with('info','验证码错误...')->with('url','/'); } $res = $this->LoginStore->getAdminUser($data); if(!$res){ return view("404")->with('info','账号不存在...')->with('url','/'); } $password = md5($res->name.$data['pass']); //md5(name连接密码) $md = substr_replace($password,$res->name,0,4); $password = md5($md); if(isset($res) && !empty($res)){ if($res->pass ==$password){ \Session::put('login',$res); return redirect('/admin'); }else{ return view("404")->with('info','密码好像有错误...')->with('url','/'); } } return view("404")->with('info','帐号或密码不能为空...')->with('url','/');}
添加测试数据的时候,可以用以下方法直接添加
Session::flash()
方法每次生成session
的时候,会把过去的session
销毁,
还要注意设置浏览器不要缓存
作者:luanjinlong
链接:http://www.jianshu.com/p/4d3760046858
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- Laravel验证码工具gregwar/captcha
- Laravel的验证码库gregwar/captcha
- Laravel的验证码库gregwar/captcha
- Laravel的验证码库gregwar/captcha
- Laravel的验证码库gregwar/captcha
- Laravel的验证码库gregwar/captcha
- laravel 图像验证码 Gregwar\\Captcha 和 mews/captcha
- Laravel-5.1验证码mews captcha
- Laravel-5.1验证码mews captcha
- laravel 图片验证码 mews/captcha
- laravel使用mews/captcha图片验证码解决方案
- 验证码(CAPTCHA)
- captcha验证码入门
- 验证码 Captcha
- Laravel5 验证码Captcha 扩展
- java-captcha实现验证码
- laravel整合mews captcha验证码的时候只出现两条边框,没有文字和背景图片
- ecshop ajax请求验证captcha(验证码)
- jQuery的ready()事件与js中的onload事件的区别
- HDU 1074 Doing Homework【状压DP】
- Linux /etc/passwd /etc/group /etc/shadow 文件的格式说明
- jmeter聚合报告分析
- 邮件营销 | 分享即转化,让客户朋友圈“活”起来
- Laravel验证码工具gregwar/captcha
- SpringBoot项目打包三方JAR
- Android Studio 里面类和方法实际被调用了,但是AS显示没有被调用
- JAVA集合类总结
- spring包的详细介绍
- Intent数据传递两种常见方式
- android中全局变量的表示 多个activity的数据共享
- 微信小程序websocket,后台SSM(SpringMVC+Spring+Mybatis)
- Android LayoutInflater原理分析,带你一步步深入了解View(一)