内容显示页
 
类别:ASP+VBS | 浏览(601) | 2007-7-25 22:08:01 | 关闭广告

利用SESSION技术实现的验证码,在做后台登录时没问题,但用他做文章讨论的验证码时就有问题了:

1.在打开新网页时前一个网页上显示的验证码就无效了。因为他只记录最后生成的一个验证码。
2.如果用户看了你半天文章,超过了session的有效期,那么他评论时,验证码会显示过期,有时还会出现用户用户输入了半天的内容消失的情况,非常不利于交互。

 

目前本人试过的方法:
验证码失效:用xmlhttp实现读取本网站任意一网页头"HEAD",或读内容"GET",以让网页SESSION时间延长,结果失败。代码如下:
//不让验证码失效
checkcode_yongfa365()
function checkcode_yongfa365()
{
timer2=window.setTimeout("checkcode_yongfa365()",1000*60*10);
XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
XMLHTTP.open("GET","http://www.yongfa365.com/index.htm",true);
XMLHTTP.send();

}
曾分析过Z-blog,他有三个函数,生成,取得,验证,验证码,使用的是application技术,看了半天也没看懂(主要是内心反对使用这个对象)

 


好的验证码应该是:
1.每页都有自己的验证码
2.验证码不会过期
3.验证码应该可以让用户更换,以便看清,且有明显提示“看不清?”,而不是手放到图片上才显示。

我见到过的可以实现的例子有http://www.ky530.com/blog,http://hi.baidu.com/yongfa365,这里面的文章就是每一文章就有一个验证码,不知道如何实现好。

欢迎大家探讨,或直接给出好的例子来。

 


SESSION名称不一样,可以用网页的名称
调用 时<img src=checkcode.asp?txtTitle=a123456 >
session("a123456")=yongfa365
提交判断时用if session(request("txtTitle"))=request("checkcode")
应该可以
##################################################################

 

关于SESSION过期的问题

可以用COOKIES,在存储之前先用MD5加密一下.

服务器写到客户的cookie里,不管多长时间后,用户提交数据,服务器if request.cookies("md5title")<>md5(request("checkcode")) then errormsg("验证码不正确")

####################################################################

听说cookie可能有漏洞,不知道在这方面会不会存在漏洞,感觉已经可以实现了,如果大家有更好的方法可以提出来咱们共享下。

 


 

终于可以实现了。

页面调用验证码时,带一个参数
eg. a.asp?md5title=ASDDSGFHFGHKJ

验证码页面接收这个md5title, 然后根据这个生成以md5title为变量名,生成的验证码用md5加密后为值。以cookie形式保存到客户端。
eg. response.cookies(request("md5title"))=md5(生成的随机码)

用户无论打开多少个页面,当他在其中一个页面发表评论时,这个页面会向服务器提交一个带有md5title的内容及表单里的输入验证码的值 。在服务器端进行判断。
eg. if request.cookies(request("md5title"))=md5(request("checkcode"))


引用本页地址:http://www.yongfa365.com/item/Checkcode-ASP-Session-Cookies-Method-yongfa365.html
 
 
相关链接
 
网友评论:
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片看不清? 换张图试试
 
   
 
 
文章分类
 
   

Power by :柳永法(yongfa365)'Blog | Model by :hibaidu | CSS by:众网友 | 京ICP备07011491号  QQ:64049027  E-mail:64049027qq.com

本空间赞助商:北京中科兴联信息技术有限公司