日期:2014-05-17  浏览次数:20460 次

怎么让用户一天只能点击一次啊?
我有个按钮,让用户一天只能点击一次,我加的cookie,判断时间,
只要浏览器不关,F5刷新是没问题的,可以判断到cookie,但是浏览器一关,在打开,cookie貌似就没了,又能点击了。。
下面是我的代码,
C# code

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                HttpCookie oldCookie = Request.Cookies["Time"];//判断Time的cookie
                if (oldCookie != null)
                {
                    if (DateTime.Now.ToString("yyyy-MM-dd") == Convert.ToDateTime(oldCookie.Values["GetTime"]).ToString("yyyy-MM-dd")) //如果当前日期和cookie的日期相同
                    {
                        IsEnable = true;
                        this.IsGet.Value = "false";
                    }
                    else
                    {
                        HttpCookie newCookie = new HttpCookie("Time");//新建Time的cookie
                        newCookie.Values.Add("GetTime", DateTime.Now.Date.ToString("yyyy-MM-dd"));//给cookie添加当前日期
                        Response.Cookies.Add(newCookie); //写入cookie
                    }
                }
            }
        }


但是这样貌似不管用,只要浏览器一关,在打开cookie就又是null了。。。请教大家有别的写法么?分享一下呗。。。。

------解决方案--------------------
直接IP 呵呵
------解决方案--------------------
浏览器一关cookie怎么会null呢,可以设置的啊,要不然 记住密码 功能怎么搞。
------解决方案--------------------
最好的方法在数据库记录,Cookie可以清空的。ip可以换的
------解决方案--------------------
没有设置cookies过期时间,请看下面代码红字部分
C# code

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                HttpCookie oldCookie = Request.Cookies["Time"];//判断Time的cookie
                if (oldCookie != null)
                {
                    if (DateTime.Now.ToString("yyyy-MM-dd") == Convert.ToDateTime(oldCookie.Values["GetTime"]).ToString("yyyy-MM-dd")) //如果当前日期和cookie的日期相同
                    {
                        IsEnable = true;
                        this.IsGet.Value = "false";
                    }
                    else
                    {
                        HttpCookie newCookie = new HttpCookie("Time");//新建Time的cookie
                        newCookie.Values.Add("GetTime", DateTime.Now.Date.ToString("yyyy-MM-dd"));//给cookie添加当前日期
                         
                        [color=#FF0000]newCookie.Expires = DateTime.Now.AddHours(24.0);[/color]
                        Response.Cookies.Add(newCookie); //写入cookie
                    }
                }
            }
        }

------解决方案--------------------
记录到文件或注册表
------解决方案--------------------
探讨
最好的方法在数据库记录,Cookie可以清空的。ip可以换的

------解决方案--------------------
既然所有人都能点击,你限制这个有何意义啊??
------解决方案--------------------
老孟说的对,你必须把用户操作保存到服务器上。要不用户可以换个电脑或者浏览器照样点击
------解决方案--------------------
应该是记录到数据库里吧 点击了就在表里加一条数据,然后今天就不可以让点击了
------解决方案--------------------
保存 到服务器上是最保险的方法