后端验证码的值如何和前端进行匹对?

php中文网
发布: 2016-08-04 09:20:28
原创
1779人浏览过

前端用户注册时填验证码图片的值,然后和后端进行匹对。

但是因为用户没有注册,无法给他绑一个识别身份,所以我暂时的设计是这样的:

生成验证码图片时把验证码的值存进缓存(redis)里,缓存设置过期时间,然后前端提交验证验证码时从缓存里读取值,看是否有,如果存在匹对成功并且删除该条缓存。

这样的问题就是有可能出现输错也能匹对成功的情况,只是几率不是特别高。

请问有没有更好的思路?

立即学习前端免费学习笔记(深入)”;

知我AI·PC客户端
知我AI·PC客户端

离线运行 AI 大模型,构建你的私有个人知识库,对话式提取文件知识,保证个人文件数据安全

知我AI·PC客户端 0
查看详情 知我AI·PC客户端

回复内容:

前端用户注册时填验证码图片的值,然后和后端进行匹对。

但是因为用户没有注册,无法给他绑一个识别身份,所以我暂时的设计是这样的:

生成验证码图片时把验证码的值存进缓存(redis)里,缓存设置过期时间,然后前端提交验证验证码时从缓存里读取值,看是否有,如果存在匹对成功并且删除该条缓存。

这样的问题就是有可能出现输错也能匹对成功的情况,只是几率不是特别高。

请问有没有更好的思路?

立即学习前端免费学习笔记(深入)”;

如果是非前后端分离,那么可以将验证码存放在session中,进行校验。
如果是前后端分离,那么,前端每次请求都是无状态的,那么,就需要在前端第一次请求的时候,分配给前端一个token,然后,前端每次请求时,都会带着这个token。可以将该token作为redis的键值,并将验证码放在对应的值位置。

一个session一个验证码,没注册也有session

只要控制好,应该不会出现输错也能匹对成功的情况。
1,后台生成验证码。并且放到session里。
2,前台获取验证码也是和刚才放到session里的这个同步。
3,如果前台输错了,或者用户点击了切换验证码。那后台就更换验证码,同时session里的也更换

其实,只要始终保证前台显示的验证码和session中的同步就不会出现问题。

PS:每个request是多线程情况的话就应该不会出现输错也能匹对成功的情况。

用户注册时生成验证码时,把验证码写入session,用户提交后,从session里读出验证码,进行比对
你参考下这篇文章http://netsecurity.51cto.com/art/201402/428721.htm

前端:<img src="checkcode.php" id="code" onclick="JavaScript:this.src='checkcode.php?tm='+Math.random()" alt="后端验证码的值如何和前端进行匹对?" >
后端:

<code>$showing=strtoupper($_POST['checkcode']); //检测提交过来的验证码
if($_SESSION['checkcode']!=$showing||empty($showing)){
  unset($_SESSION['checkcode']);
  die('验证码错误');
}
</code>
登录后复制

验证码生成:
后端验证码的值如何和前端进行匹对?

session:在计算机中,尤其是在网络应用中,称为“会话控制”。不论是不是注册用户,只要访问,服务器就会生成一个唯一的会话 ID 。把验证码数据存在 session 里面即可。

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号