时间:2021-05-26
1、表单提交,并将其提交到本页
(1) form 属性method为post方法,修改路由,使其接收post、get的请求
Route::any('/admin/login','Admin\LoginController@login');
(2)LoginController.php
修改login方法,根据不同的请求返回不同的内容
如果请求方法为get ,返回登陆页面;如果请求为post,就行验证
use Illuminate\Support\Facades\Input;public function login(){ if($input = Input::all()){ dd($input); }else { return view('admin.login'); }}刷新页面,如果返回如下
这是laravel csrf保护,解决:
正确显示:
2、确认验证码是否正确
(1)LoginController.php,修改login()方法
public function login(){ if($input = Input::all()){ $code = new \Code(); $_code = $code->get(); if(strtoupper($input['code'])!=$_code){ //strtoupper()函数将输入的字母转化为大写字母,否则小写也是属于不正确 //back()函数返回上一请求页面,使用with将提示信息带回,信息存到session中 return back()->with('msg','验证码错误'); }else{ echo 'ok'; } }else { return view('admin.login'); }}(2)修改login.blade.php,获取session
将之前的用户名错误修改为:
@if(session('msg'))<p style="color:red">{{session('msg')}}</p>@endif验证:
问题总结:
1、如果有需要用到session传参的地方,路由必须写在中间件里面
比如在控制器使用back()函数的时候return back()->with('msg','验证码错误');,如果路由不是在中间件,没有session,即使你在入口session_start(),也没有用,又不好调试;还有就是不会产生csrf的_token
Route::group(['middleware' => ['web']], function () {//路由要放中间件里面,否则会生成不了sessionRoute::any('/admin/login','Admin\LoginController@login');//这里需要接受post传参,所以必须用混合路由Route::get('/admin/code','Admin\LoginController@code');Route::get('/admin/getcode','Admin\LoginController@getcode'); });2、引入第三方类的时候,如果此类文件有用到session,那么需要在入口文件session_start(),这是最简单的解决方式了,否则会报不认识$_SESSION
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码。1、前端代码index.html验证码提交自验证用户名验证码(funct
验证码在用户注册、登陆页面为了防止暴力请求,可以加入验证码。如果验证码错误,则不需要继续处理,可以减轻服务器的压力使用验证码也是一种有效防止csrf的方法def
表单请输入验证码:提交载入页面时,会自动请求getCodeServlet,获取图片(验证码)。getCodeServlet,产生验证码@WebServlet("
两种验证码验证实现,一种直接在form表单提交按钮实现验证,一种使用ajax传递参数实现验证:1、直接在form表单提交按钮实现验证,在控制器VerifyCon
手机登录淘宝有的时候会发送手机验证码,只有输入验证码之后才可以登陆,但若每次登陆都需要验证码的话,我们会觉得不是很方便,所以大家就咨询小编怎么取消手机验证码