如何防止网上投票重复投票(3)_ASP教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:详解Asp函数Cbool(string) 转换为布尔值 Cbyte(string) 转换为字节类型的值 Ccur(string) 转换为货币类值 Cdate(string) 转换为日前类型的值 Cdbl(string) 转换为双精度值 Cint(string) 转换为整数值 Clng(string) 转换为长整型的值 Csng(string) 转换为单精度的值 Cstr(
方法二:利用Cookies对象
因为Cookies对象把变量的值保存在浏览器客户端,所以可以根据Cookies保存的IsVoted的值来判断用户是否投过票。Cookies变量和Session变量一样是私有的,但是如果我们定义了Cookies变量的生存期限,则Cookies变量是公有的,凡是从同一台机器上登录的用户在规定的时间期限没有达到时,都无法投票,这在一定程度上也能防止反复投票。实现程序流程如图2:
根据实际情况合理地设置Cookies变量的生存期限的长短,例如设定为10分钟,这样一台机器即使连续投票最多一天也只能投144张票。
此种方法的漏洞:在Windows 9x环境下,只要把 WindowsCookies目录下所有*.txt文件删除,又可重复投票。为了再进一步防止反复投票,下面给出方法三。
方法三:验证IP地址与登录时间
此方法首先利用 Request.ServerVariables(REMOTE_ADDR)取得用户的IP地址。在Web Server端建立一个标准的MDB类型的数据库,此数据库有一个表,该表只有两个字段:IP地址和登录时间。之所以设置登录时间这个字段,是考虑到拨号上网用户可能共用同一个IP地址,如果一个IP 地址只能投一次票,那么显然不合理。同时,我们还采用方法二同样的思想,必须每隔一个设定的时间段,同一个IP地址才能再次投票。所以这种方法比方法一、方法二在防止反复投票方面要严格得多。其实现的程序流程如图3:
方法四:小范围调查
这种方法只适用于小范围调查,思想与方法三相同,只是把方法三中的 IP地址换成可以唯一代表用户的字段,如学生证号、工作证号等。这时建立的MDB数据库只包括两个字段:证件号码与IsVoted(其中IsVoted是逻辑型字段, TRUE表示已投过票,FALSE表示还未投票,在建库时所有记录的IsVoted的值都设为 FALSE)。在投票之前,要求先输入正确的证件号码,然后再判断IsVoted的值。实现这种方法的程序流程如图4:
从方法一到方法四,安全性越来越高,防止重复连续投票功能越来越强,但是各种方法都有各自的局限性。在应用中,用户应根据实际情况选择合适的方法。如果小范围投票,方法四无疑是最好的;如果在Internet上投票,方法三是最好的。另外一点必须提及的是:虽然Application有保存变量的功能,但是我们没有用到。因为 Application变量是一个全局性变量,如果用Application把IsVoted设为TRUE,则任何用户都无法投票;如果用Application把IsVoted设为FALSE,则任何用户都可以投票,就没有任何防范功能了.
分享:解析用ADO连接各种数据库的代码简单介绍一下几种ADO连接方式:ODBCDSN,ODBCDSN-Less, OLEDBProvider,和MSRemoteProvider. 1。ODBCDSN连接 I.DSN oConn.OpenDSN=AdvWorks;_ UID=Admin;_ PWD=; 注意:从MDAC2.1开始就不能够在使用这样的方式了,就是只把DSN文件名放在ConnectString中
相关ASP教程:
- 相关链接:
- 教程说明:
ASP教程-如何防止网上投票重复投票(3)。