我现在做的一个简单的网站在线投票。在网站中有几好几个不同页面有投票的,我现在是用cookie保存用户投票的信息
FIDCookie = new HttpCookie(FID);//FID 是变量。我让他动态的分配
  FIDCookie.Value = FID;
  FIDCookie.Expires = DateTime.Now.AddHours(1);
  HttpContext.Current.Response.Cookies.Add(FIDCookie); 
 string FID=是相应页面下的对应的ID号。
比如工地页面 FID=30 FName="工地", FID=31 FName="工地"相册页面FID=30,FName="图片"。
1.按照上面的方法,如果两个FID相同就重叠了,后面的应该覆盖前面的。有什么好方法么解决这个冲突么。
2.可能我的投票的工地比较多。如果多余20个的话理论上他会覆盖前面的。投了一轮的话可以再投一轮,我设的一个小时界限就没有用了。
3.如果禁用了Cookie,我用Cookie验证就没有一点用处了。可以连续投票。可以用JS判断出浏览器是否禁用了Cookie。我在网上找个几个都没有用。比如if (navigator.cookiesEnabled)得到的结果总是为true。
4.我想过用IP和插入数据库的时间来验证,但局域网内所有电脑都是用的一个IP地址。好像行不通。
5.其他还有什么好的建议。。没多少分了。希望各位给我提提意见。

解决方案 »

  1.   

    本帖最后由 net_lover 于 2011-08-08 12:51:44 编辑
      

  2.   

    你应该在服务器端判断是否支持js和cookie
    HttpBrowserCapabilities bc = Request.Browser;
    Response.Write("<p>Browser Capabilities:</p>");
    Response.Write("Type = " + bc.Type + "<br>");
    Response.Write("Name = " + bc.Browser + "<br>");
    Response.Write("Version = " + bc.Version + "<br>");
    Response.Write("Major Version = " + bc.MajorVersion + "<br>");
    Response.Write("Minor Version = " + bc.MinorVersion + "<br>");
    Response.Write("Platform = " + bc.Platform + "<br>");
    Response.Write("Supports Cookies = " + bc.Cookies + "<br>");
    Response.Write("Supports VB Script = " + bc.VBScript + "<br>");
    Response.Write("Supports JavaScript = " + bc.JavaScript + "<br>");
    Response.Write("Supports ActiveX Controls = " + bc.ActiveXControls + "<br>");    
      

  3.   

    觉得HttpCookie aCookie = new HttpCookie(FID);
    aCookie.Values["FName"] = "图片";
    aCookie.Expires = DateTime.Now.AddHours(1);
    Response.Cookies.Add(aCookie);

    HttpCookie aCookie = new HttpCookie(FID);
    aCookie.Values["FName"] = "工地";
    aCookie.Expires = DateTime.Now.AddHours(1);
    Response.Cookies.Add(aCookie);
    这两个cookie会同时存在么。。
      

  4.   

    通过IP时段就是我说的监测IP插入数据库的时间和IP的值么这样的话通过局域网内通过adsl上网的电脑用的是一个IP
      

  5.   

    HttpCookie aCookie = new HttpCookie(FID);
    aCookie.Values["TuPian"] = "图片";
    aCookie.Expires = DateTime.Now.AddHours(1);
    Response.Cookies.Add(aCookie);HttpCookie aCookie = new HttpCookie(FID);
    aCookie.Values["GongDi"] = "工地";
    aCookie.Expires = DateTime.Now.AddHours(1);
    Response.Cookies.Add(aCookie);
      

  6.   

    js 如果不能判断浏览器是否支持cookie ,在服务器判断后用隐藏域传个标识值到jquery中应该可以。虽然麻烦了点,应该没问题。