jsp中利用.js验证图片验证输入合不合法不会
jsp中图片验证时是先加载html还是加载图片啊,我想利用js在提交表单之前判断验证码,但每次都提示我验证码输入错误,仔细检查发现,以下面的photovalue="<%=...
jsp中图片验证时是先加载html还是加载图片啊,我想利用js在提交表单之前判断验证码,但每次都提示我验证码输入错误,仔细检查发现,以下面的photovalue="<%=rand %>" 方法(在.js中验证)每次获得的验证码都是上次的,而我得输入则是当前产生的验证码,所以会提示出错(我的PhotoVerify.jsp中在产生验证码之后,赋值给rand,然后用session.setAttribute()方法存起来。)。但如果点击提交之后(取消了.js验证)传到另一个页面,接受参数rand则是当前产生的验证码,怎么回事啊,该怎么用.js文件验证哪?求助!!
<tr><td><img src="<%=request.getContextPath() %>/admin/PhotoVerify.jsp"></td>
<%String rand =(String)session.getAttribute("rand"); %>
<td><input type="text" name="photocheck" photovalue="<%=rand %>" size="20" id="photobox" value="请输入图中验证码">
<font color="red" size="2" class="feedbackHide" id="photoInfo">验证码输入错误</font>
</td> 展开
<tr><td><img src="<%=request.getContextPath() %>/admin/PhotoVerify.jsp"></td>
<%String rand =(String)session.getAttribute("rand"); %>
<td><input type="text" name="photocheck" photovalue="<%=rand %>" size="20" id="photobox" value="请输入图中验证码">
<font color="red" size="2" class="feedbackHide" id="photoInfo">验证码输入错误</font>
</td> 展开
1个回答
展开全部
加载页面的时候,会先获得当下产生的一个rand:
<%String rand =(String)session.getAttribute("rand"); %>
,这个值由服务端传给了photovalue="<%=rand %>" 这个文本框;但是,页面在客户端加载后,便再次去读取src="<%=request.getContextPath() %>/admin/PhotoVerify.jsp"的PhotoVerify.jsp页面,此时,PhotoVerify.jsp会重新产生一个rand,这个 rand 和之前传给客户端的不是同一个rand了,所以,验证码会报错。也就是获取页面时PhotoVerify.jsp产生了一个rand并传给了客户端,但页面加载完后加载图片时,图片src加载PhotoVerify.jsp又产生了一次rand,两次产生的rand,自然不一致了。可以通过AJAX的方式获得PhotoVerify.jsp最后产生的rand。一般来说,在客户端验证验证码,相当于没有设置验证码,不建议这么做,因为验证码就是为了防止穷举、暴力破解、程序自动注册等非法行为,而你把验证码直接放在了客户端,你这个验证码形同虚设。
<%String rand =(String)session.getAttribute("rand"); %>
,这个值由服务端传给了photovalue="<%=rand %>" 这个文本框;但是,页面在客户端加载后,便再次去读取src="<%=request.getContextPath() %>/admin/PhotoVerify.jsp"的PhotoVerify.jsp页面,此时,PhotoVerify.jsp会重新产生一个rand,这个 rand 和之前传给客户端的不是同一个rand了,所以,验证码会报错。也就是获取页面时PhotoVerify.jsp产生了一个rand并传给了客户端,但页面加载完后加载图片时,图片src加载PhotoVerify.jsp又产生了一次rand,两次产生的rand,自然不一致了。可以通过AJAX的方式获得PhotoVerify.jsp最后产生的rand。一般来说,在客户端验证验证码,相当于没有设置验证码,不建议这么做,因为验证码就是为了防止穷举、暴力破解、程序自动注册等非法行为,而你把验证码直接放在了客户端,你这个验证码形同虚设。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询