最近有朋友要我帮忙弄一下laravel的验证码登陆,所以稍稍研究了一下。(本人都快忘了咋使用laravel了)
首先,安装laravel就不用在下赘述了吧,我的版本是5.2.45(注:laravel5.2.6以上的版本中间件可以自动加载),这还是挺重要的。
安装完成之后,你需要使用composer来加载你的Captcha,具体方法就是在你的composer.json中的require数组中加上"gregwar/captcha":"1.*"这行代码。然后嘞,就在你的项目根目录下使用cmd来运行composer update这行代码。这样一来的话,就算是安装上这个库或者是中间件了。之后就可以放肆的写你的代码了。
php:(具体的路由啥的在下就不做太多的赘述了,只写关键代码)
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
						 | publicfunctioncaptcha($tmp){ //生成验证码图片的Builder对象,配置相应属性$builder= newCaptchaBuilder;//可以设置图片宽高及字体$builder->build($width= 100, $height= 40, $font= null);//获取验证码的内容$phrase= $builder->getPhrase();//把内容存入sessionSession::flash('milkcaptcha', $phrase);//生成图片header("Cache-Control: no-cache, must-revalidate");header('Content-Type: image/jpeg');$builder->output();} | 
blade模板的调用:
| 
								1
						 | <img src="{{url('/captcha/1')}}"alt=""onclick="this.src='{{url('/captcha')}}/'+Math.random()"width="100"height="40"border="0"> | 
如果你以为这样就完事了的话,那你真的是too yang too simple了。在你验证的时候你会发现怎么样都是错误。
是不是很酸爽。因为在laravel5.2中,所有的session都是不能跨控制器、方法的,如果跨的话,session会重新生成,默认session的传递需要经过中间件。不要急,接下来的方法就是解决之道。目前本人所知有两种解决方案,其一就是自己建一个中间件,然后把所有的session都存储在其中,但是有点小麻烦,接下来本人介绍一种简单的方法,在你的laravel\\app\\Http\\Kernel.php 文件里的$middleware里加上以下代码:
| 
								1
 
								2
 
								3
 
								4
 
								5
						 | \\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode::class,\\Illuminate\\Cookie\\Middleware\\EncryptCookies::class,\\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,\\Illuminate\\Session\\Middleware\\StartSession::class,\\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class, | 
之后就可以放心的使用session了。这是在下的验证验证码的方式,
| 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
						 | publicfunctionlogin_data(){$userInput= \\Request::get('captcha');if(Session::get('milkcaptcha') == $userInput) {//用户输入验证码正确,验证你自己密码用户名echo1;} else{//用户输入验证码错误echo2;}} | 
最后不得不吐槽一下laravel的官方文档,像这种坑都不提前说明,估计是担心开发者开发的太顺心了吧。
总结
以上所述是小编给大家介绍的Laravel5.2使用Captcha生成验证码实现登录(session巨坑),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!
原文链接:http://blog.csdn.net/luyaran/article/details/78958858?utm_source=tuicool&utm_medium=referral
相关文章
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
- 
            2025-05-27 95
- 
            2025-05-29 81
- 
            2025-05-27 74
- 
            2025-05-29 99
- 
            2025-05-29 60
 
        
 
    		 
            	 
															 
         
         
        
 
                        