php保存手机验证码到session,【php】SESSION保存短信验证码问题

【php】SESSION保存短信验证码问题

mip版  关注:124  答案:4  悬赏:0

解决时间 2021-02-24 02:40

27c0a3317b43cbced8e45239545128df.png

已解决

2021-02-23 03:47

网站有一个手机验证功能,我是用一个$_SESSION['tel']=‘xxxxxx'来保存所有验证码?还是为每个用户都创建一个SESSION来保存验证码?如$_SESSION['user1']=xxxxxx, $_SESSION['user2']=xxxxxx,$_SESSION['user3']=xxxxxx.验证成功后注销。

最佳答案

be8fb94673f06ba7fd0aee2eab472fcd.png

2021-02-23 04:45

如果你的手机验证功能所需要的验证码是晕一次性的 就直接$_SESSION['tel']里面 不用单独直接某个用户,如果你的验证码是长时间有效的话 就保存在数据库或者cookie里面

全部回答

95e1f97fd27e5cf55c749bf4b0d7c323.png

1楼

2021-02-23 07:04

恕我直言,看来楼主还完全不理解验证码的使用(貌似很多网站的开发人员均如此)。

之所以要验证码,而且还要以图片的方式显示,主要就是为了确保客户端是人工操作。

为了确保验证码只能被肉眼识别,验证码图片还要故意弄得“乱七八糟”、“杂乱无章”的。

因此,是不可能把正确答案再以文本方式放在客户端的。

若把答案以文本形式发送到客户端,随便写个程序就可以获取到正确答案并轻松通过验证,若如此,还要那样辛辛苦苦弄出来的验证码何用?

而且,若在客户端进行验证,是有很多种方法可以跳过验证的。

如果要使用图片验证码,则肯定是会回到服务器端之后才会验证的。

所以,你目前应该采用的正确的做法是:

1、把你那句“生成随机数并保存到session中”的代码放到image.jsp中

2、login.jsp页面上的相关代码改成:

function getVimg()

{

document.getElementById( "vimg" ).src = "image.jsp?num=" + Math.random();

}

getVimg();

这个应该是页面加载的问题,我按照楼主的做法做了一下,页面首次加载时根本无法接收到session.getAttribute("validate")的值,而之所以后来取到的都是前一次的验证码,是因为你取session里的验证码时,新的验证码还没有放到session中,这就造成了在客户端验证时产生的错误。如果要解决这个问题,还是应该与服务器交互进行验证,这样就可以避免这种程序运行差异而导致的问题了。

客户端是不要做任何验证的。否则就有漏洞了。因为验证码只能使用一次。

1 你用图片生成验证码,保存在session中

2 用户输入验证码

3 服务器端进行比对

4 无论正确与否,都销毁session里面的验证码!

ba31e903b80d5525fc8c8aa99bef2259.png

2楼

2021-02-23 06:56

哥哥,session是自动生成的,你连接到服务器就会有一个session_id的,每个用户的ID都是唯一的。还是为每个用户都创建一个SESSION来保存验证码? 从这句话就知你还没明白这个了…… 直接保存就行了,用户只能读到自己ID的session的。注销 这个可以 在服务器设置生命周期,不设置也行 ,关闭连接会自己注销

be96bae435cbcf8d6bd0c2ffb069bfda.png

3楼

2021-02-23 05:21

首先,为了确保启用session,请在使用session前调用session_start();

其次,为了避免简单的编程错误,建议所有变量,函数,类名手工区分大小写.

各种编程语言在"是否区分大小写"上表现不一致,但坚持区分一定不会有错!

也请不要依赖ide工具的自动纠正大小写功能

良好的编程习惯是高效编写无错代码的前提

注:全局变量$_session,$_request,$_get,$_post必须使用大写

$_session在未启用session情况下使用不会报错

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值