我的做法是用Cookies记录用户的IP和所投选手的ID,如果用户的IP和选手的ID在Cookies中存在,就显示你已投票图片,否则就显示请你投票图片,代码如下 string vote = "," + row["id"];
if(Request.Cookies["Vote"] != null)
{
if(Request.Cookies["Vote"]["IP"] == Request.ServerVariables["REMOTE_ADDR"] && Request.Cookies["Vote"]["ID"].IndexOf(vote) >= 0)
{
voteImage = "<img src=\"Images/vote.jpg\" alt=\"您已投票\" vspace=\"3\" border=\"0\" style=\"cursor:hand;\">";
}
vote += "," + Request.Cookies["Vote"]["ID"];
}
TimeSpan span = new TimeSpan(1, 0, 0, 0);
HttpCookie cookie = new HttpCookie("Vote");
cookie.Values.Add("IP", Request.ServerVariables["REMOTE_ADDR"]);
cookie.Values.Add("ID", vote);
cookie.Expires.Add(span);
Response.Cookies.Add(cookie);
但现在会出现个问题是:用户投了一位选手的票后,图片变成你已投票,打开一个新页面,投另一位选手的票,再回到此页面,刷新一下,图片又变成请你投票,用户又可以投此选手的票了,请问是什么原因啊?
有什么好的办法吗?我这段代码是不是存在什么错误啊?怎么防止?
谢了
if(Request.Cookies["Vote"] != null)
{
if(Request.Cookies["Vote"]["IP"] == Request.ServerVariables["REMOTE_ADDR"] && Request.Cookies["Vote"]["ID"].IndexOf(vote) >= 0)
{
voteImage = "<img src=\"Images/vote.jpg\" alt=\"您已投票\" vspace=\"3\" border=\"0\" style=\"cursor:hand;\">";
}
vote += "," + Request.Cookies["Vote"]["ID"];
}
TimeSpan span = new TimeSpan(1, 0, 0, 0);
HttpCookie cookie = new HttpCookie("Vote");
cookie.Values.Add("IP", Request.ServerVariables["REMOTE_ADDR"]);
cookie.Values.Add("ID", vote);
cookie.Expires.Add(span);
Response.Cookies.Add(cookie);
但现在会出现个问题是:用户投了一位选手的票后,图片变成你已投票,打开一个新页面,投另一位选手的票,再回到此页面,刷新一下,图片又变成请你投票,用户又可以投此选手的票了,请问是什么原因啊?
有什么好的办法吗?我这段代码是不是存在什么错误啊?怎么防止?
谢了
欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
我就讲下获取客户端IP的方法:
Page.Request.UserHostAddress;
看看是按IP还是按用户咯
正解~
用手机投票是个好办法,技术上又很难