【php】SESSION保存短信验证码问题
网站有一个手机验证功能,我是用一个$_SESSION['tel']=‘xxxxxx'来保存所有验证码?还是为每个用户都创建一个SESSION来保存验证码?如$_SESSI...
网站有一个手机验证功能,我是用一个$_SESSION['tel']=‘xxxxxx'来保存所有验证码?还是为每个用户都创建一个SESSION来保存验证码?如$_SESSION['user1']=xxxxxx, $_SESSION['user2']=xxxxxx,$_SESSION['user3']=xxxxxx.验证成功后注销。
展开
4个回答
展开全部
如果你的手机验证功能所需要的验证码是晕一次性的 就直接$_SESSION['tel']里面 不用单独直接某个用户,如果你的验证码是长时间有效的话 就保存在数据库或者cookie里面
更多追问追答
追问
验证码保存5分钟,5分钟后验证码失效。
我这样写的:$_COOKIE($code,$_SESSION['tel'],5*60);
假如 user1 的验证码,$_SESSION['tel'] = "123456"
user2的验证码, $_SESSION['tel'] = "654321"
在user1没有验证码成功前,user2的验证码把user1的验证码覆盖掉了?
追答
应该是5分钟内当前用户的验证不再次重复生成,如果过了5分钟还没有验证,则删除该验收码。但用户有再次操作的时候再判断是否重新生成。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-08-08 · 【免费测试,验证码5秒必达】
北京巴卜技术有限公司
北京巴卜技术有限公司(以下简称巴卜)是具备国际水准的移动商务平台技术和应用方案提供商。自成立以来,巴卜始终 致力于为国内外企业提供具备国际技术水准的移动商务平台及运营服务。
向TA提问
关注
展开全部
一般现在系统群发的验证码都是由专门的短信群发平台发送的,号段一般是106,如果有收不到的情况,可能是被运营商拦截了或者是系统延迟了
群发短信分2种,一种是用专门的短信群发平台来推送,这种一般是106开头的
还有一种就是用自己的手机号群发短信,如果短时间高频次的发送,很容易被运营商判定为骚扰短信进行拦截
群发短信分2种,一种是用专门的短信群发平台来推送,这种一般是106开头的
还有一种就是用自己的手机号群发短信,如果短时间高频次的发送,很容易被运营商判定为骚扰短信进行拦截
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
恕我直言,看来楼主还完全不理解验证码的使用(貌似很多网站的开发人员均如此)。
之所以要验证码,而且还要以图片的方式显示,主要就是为了确保客户端是人工操作。
为了确保验证码只能被肉眼识别,验证码图片还要故意弄得“乱七八糟”、“杂乱无章”的。
因此,是不可能把正确答案再以文本方式放在客户端的。
若把答案以文本形式发送到客户端,随便写个程序就可以获取到正确答案并轻松通过验证,若如此,还要那样辛辛苦苦弄出来的验证码何用?
而且,若在客户端进行验证,是有很多种方法可以跳过验证的。
如果要使用图片验证码,则肯定是会回到服务器端之后才会验证的。
所以,你目前应该采用的正确的做法是:
1、把你那句“生成随机数并保存到session中”的代码放到image.jsp中
2、login.jsp页面上的相关代码改成:
<image src="" id="vimg" onclick="getVimg()" >
<script>
function getVimg()
{
document.getElementById( "vimg" ).src = "image.jsp?num=" + Math.random();
}
getVimg();
</script>
这个应该是页面加载的问题,我按照楼主的做法做了一下,页面首次加载时根本无法接收到session.getAttribute("validate")的值,而之所以后来取到的都是前一次的验证码,是因为你取session里的验证码时,新的验证码还没有放到session中,这就造成了在客户端验证时产生的错误。如果要解决这个问题,还是应该与服务器交互进行验证,这样就可以避免这种程序运行差异而导致的问题了。
客户端是不要做任何验证的。否则就有漏洞了。因为验证码只能使用一次。
1 你用图片生成验证码,保存在session中
2 用户输入验证码
3 服务器端进行比对
4 无论正确与否,都销毁session里面的验证码!
之所以要验证码,而且还要以图片的方式显示,主要就是为了确保客户端是人工操作。
为了确保验证码只能被肉眼识别,验证码图片还要故意弄得“乱七八糟”、“杂乱无章”的。
因此,是不可能把正确答案再以文本方式放在客户端的。
若把答案以文本形式发送到客户端,随便写个程序就可以获取到正确答案并轻松通过验证,若如此,还要那样辛辛苦苦弄出来的验证码何用?
而且,若在客户端进行验证,是有很多种方法可以跳过验证的。
如果要使用图片验证码,则肯定是会回到服务器端之后才会验证的。
所以,你目前应该采用的正确的做法是:
1、把你那句“生成随机数并保存到session中”的代码放到image.jsp中
2、login.jsp页面上的相关代码改成:
<image src="" id="vimg" onclick="getVimg()" >
<script>
function getVimg()
{
document.getElementById( "vimg" ).src = "image.jsp?num=" + Math.random();
}
getVimg();
</script>
这个应该是页面加载的问题,我按照楼主的做法做了一下,页面首次加载时根本无法接收到session.getAttribute("validate")的值,而之所以后来取到的都是前一次的验证码,是因为你取session里的验证码时,新的验证码还没有放到session中,这就造成了在客户端验证时产生的错误。如果要解决这个问题,还是应该与服务器交互进行验证,这样就可以避免这种程序运行差异而导致的问题了。
客户端是不要做任何验证的。否则就有漏洞了。因为验证码只能使用一次。
1 你用图片生成验证码,保存在session中
2 用户输入验证码
3 服务器端进行比对
4 无论正确与否,都销毁session里面的验证码!
追问
恕我直言 答非所问!!!
追答
你又错了。给你提供一种思路。那你的问题又是什么问题呢?你经过测试了吗?就提问。呵呵 那照你这个进度 岂不是写一个内容 问一个问题。看回答要仔细。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询