用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>
缺点:可以用清除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>
相关文章推荐
- 防止重复提交的前后台实现
- Java Web防止用户重复登录(同一用户同时登录)的一种实现方案
- Spring MVC拦截器+注解方式实现防止表单重复提交
- 更新操作如何防止带外键的字段出现重复,代码实现方法
- Spring MVC拦截器+注解方式实现防止表单重复提交
- 关于怎样在新框架里如何实现防止同一字段的值重复
- springmvc中自己实现的token防表单重复提交,防止二次提交
- jsp防止页面刷新重复提交--Struts令牌实现
- Spring MVC拦截器+注解方式实现防止表单重复提交
- php采用session实现防止页面重复刷新
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十四)实现Fragment的缓冲视图和数据,防止重复加载
- session实现防止重复提交,以及验证
- 防止网上重复投票的方法
- Asp.net实现弹出窗口提示,又防止刷新被重复提交的方法
- 防止表单重复提交的实现方法!
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- Web应用中防止用户重复登录的简单实现方法
- Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据
- iOS---防止UIButton重复点击的三种实现方式
- MYSQL实现添加购物车时防止重复添加示例代码