手机版

PHP实现登录表单提交的CSRF和验证码

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

1.提交表单并将其提交到此页面

(1)表单属性方法是post方法,它修改路由以接收post和get的请求

route : any('/Admin/log in ',' Admin \ login controll[email protected]');

(2)LoginController.php

修改登录方式,根据不同的请求返回不同的内容

如果请求方法是get,返回登录页面;如果请求是发布的,它将被验证

使用照明\支持\立面\输入;公共函数log in(){ if($ input=input 3360: all()){ DD($ input);} else { return view(' admin . log in ');}}如果您返回如下,请刷新页面

这是laravel csrf保护,解决了:

正确显示:

2.确认验证码是否正确

(1)LoginController.php,修改login()方法

公共函数log in(){ if($ input=input 33603360 all()){ $ Code=new \ Code();$ _ code=$ code-get();if(strtoupper($input['code'])!=$ _ code) {//strtopper()函数将输入的字母转换为大写字母,否则小写字母不正确。//back()函数返回到上一个请求页面,用with带回提示信息,并将信息保存在会话中。return back()-带(' msg ','验证码错误');} else { echo ' ok} } else { return view(' admin . log in ');}}(2)修改login.blade.php并获取会话

将以前的用户名修改为时出错:

@ if(session(' msg '))p style=' color : red ' { session(' msg ')} }/p @ endif身份验证:

问题总结:

1.如果需要使用会话传输参数,路由必须写入中间件

例如,当控制器使用back()函数时,返回back()-带(' msg ','验证码错误');如果路由不在中间件中,没有会话,即使你在session_start()的入口,也是没有用的,很难调试;还有一个不会生成csrf的_token

route :3360 group(['中间件'=['web']),function () {//route应该放在中间件中,否则不会生成session route :3360 any('/admin/log in ',' admin \[email protected]');//这里需要接受post参数,所以必须使用混合路由route:3360get ('/admin/code ',' admin \[email protected]');route : get('/Admin/getcode ',' Admin \[email protected]');});2.在引入第三方类时,如果在这类文件中使用session,则需要在条目文件session_start()中,这是最简单的解决方案,否则会报告不知道$_SESSION

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!

版权声明:PHP实现登录表单提交的CSRF和验证码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。