用cookies实现防止重复投票

来源:互联网 发布:sql书籍推荐 编辑:程序博客网 时间:2024/06/05 05:59

 基本思想:点击投票按钮后,如果投票用户是第一次投票,即在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>
原创粉丝点击