您的位置:首页 > 其它

用cookies实现防止重复投票

2010-08-16 10:23 399 查看
基本思想:点击投票按钮后,如果投票用户是第一次投票,即在cookie中查找不到该投票用户的标识,则把投票用户标识记录到cookie中,同时设定cookie过期时间,这个时间可以限制用户多长时间内不能重复投票,然后把投票数加1;如果用户重复投票,由于在cookie中已存在该用户的标识,在cookie没过期的情况下则提示已投票。
缺点:可以用清除cookie的方法重复投票。
代码如下:

<html>
<head>
<title>防止重复投票</title>
<script language="javascript" type="text/javascript">
//cookies基本操作对象
var cookies={
read : function(n){//名字 读cookies
var dc = "; "+document.cookie+"; ";
var coo = dc.indexOf("; "+n+"=");
if (coo!=-1){
var s = dc.substring(coo+n.length+3,dc.length);
return unescape(s.substring(0, s.indexOf("; ")));
}else{
return "";
}
},
set : function(name,value,expires){//名字 值 过期时间 写cookies
var expDays = expires*24*60*60*1000;
var expDate = new Date();
expDate.setTime(expDate.getTime()+expDays);
var expString = expires ? "; expires="+expDate.toGMTString() : "";
var pathString = ";path=/";
document.cookie = name + "=" + escape(value) + expString + pathString;
},
del : function(name){//名字 删除cookies
value=""
expires="0"
var expDays = expires*24*60*60*1000;
var expDate = new Date();
expDate.setTime(expDate.getTime()+expDays);
var expString = expires ? "; expires="+expDate.toGMTString() : "";
var pathString = ";path=/";
document.cookie = name + "=" + escape(value) + expString + pathString;
}
};
var count=0;//记录投票数
function vote()
{
var name = document.getElementById("txtName").value;
if(cookies.read(name))
{
alert("你已经投过票了,明天继续吧.");
}
else
{
count++;
document.getElementById("txtCount").value = count;
cookies.set(name,"voted",1);//
}
}
</script>
</head>
<body>
<input type="text" id="txtName" value="xiaoming" />
<input type="button" value="投票" onclick="vote();" />
<div>投票数:
<input type="text" id="txtCount" value="0" readonly="readonly" />
</div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: