//获取客户端IP地址
String UserIP = Request.UserHostAddress.ToString(); //获取名为userIP的Cookie对象
HttpCookie oldCookie = Request.Cookies["userIP"]; //创建HttpCookie类型的对象并为它分配名称为userIP
HttpCookie newCookie = new HttpCookie("userIP");
//为Cookie的子项赋值,即将客户端IP地址赋给Cookie的子项,并将其命名为IPaddress
newCookie.Values.Add("IPaddress", UserIP);
//设置Cookie的失效期
newCookie.Expires = DateTime.Now.AddMinutes(1);
//将该Cookie添加到Cookies集合中
Response.Cookies.Add(newCookie); //判断该Cookie对象是否存在
if (oldCookie != null)
{
//从Cookie中获取客户端IP地址 String userIP = oldCookie.Values["IPaddress"];
if (UserIP.Trim() == userIP.Trim())
{
Jscript.ShowAndRefresh(this, "你已经投过票了!");
return;
}
else
{
//不存在
smileModel.UpdateClickHot(ID);
Jscript.ShowAndRefresh(this, "投票成功!");
return;//Response.End();
}
}
else
{
//不存在
smileModel.UpdateClickHot(ID);
Jscript.ShowAndRefresh(this, "投票成功!");
return;//Response.End();
}
这里是我的一个Cookie投票的代码 现在我要限制一个IP只能投100次 怎么判断是否有100次了
解决方案 »
- 在div中,如何把ul定义的内容在一行显示出来
- C#如何根据字符串来判断一个类型是否存在?
- asp.net如何在文件下载前后成功的在后台调用前台的函数
- 关于datalist绑定数据后保存数据的问题
- 求JS导出到word时候图片大小的控制!!急急如立令
- 上传文件时如何吧上传的路径设置为项目下的某个目录(相对路径) 本地调试时是用觉得路径 谢谢
- 急,,比较急的问题:关于水晶报表和调用excel的页在部署后:~(
- 邮件可以发送,但如何达到自动发送的功能呢,先谢了
- 着急啊,在线等,vs2010 无法调试js 之前可以升级IE9失败后就不行了
- 打包问题??急啊
- 多个下载页面时,貌似参数被覆盖了。
- asp.net不能正常結束進程
if (oldCookie != null)
{
//从Cookie中获取客户端IP地址 String _Count= oldCookie.Values["Count"];
if(Count!=null && Count!= "") Count = Int32.Parse(Count);
没投一次取得 Count 然后+1
Count++;
在写入
oldCookie.Values.Add("Count", Count);Response.Cookies.Add(oldCookie )
不过,你的过期时间太短了。没啥用。
应该把过期时间弄长一点
另外,IP设防没用。我们都是动态IP
newCookie.Expires = DateTime.Now.AddDays(100);
这个地方有误呀
如果投过票直接读取次数并加1。判断是否超过100,不用记录IP没什么用。只要投过就会写入cookie 不管他的IP是多少。
String UserIP = Request.UserHostAddress.ToString();
int Count = 0;
//获取名为userIP的Cookie对象
HttpCookie oldCookie = Request.Cookies["userIP"]; //判断该Cookie对象是否存在
if (oldCookie != null)
{
//从Cookie中获取客户端IP地址
String _c = oldCookie.Values["Count"];
int.TryParse(_c, out Count);
String userIP = oldCookie.Values["IPaddress"];
if (UserIP.Trim() == userIP.Trim())
{
//判断次数
if (Count > 100)
{
Jscript.ShowAndRefresh(this, "你已经超过次数了!");
}
else
{
Count++;
oldCookie.Values["Count"] = Count.ToString();
Response.Cookies.Add(oldCookie);
smileModel.UpdateClickHot(ID);
Jscript.ShowAndRefresh(this, "投票成功!");
}
return;
}
else
{
Count++;
oldCookie.Values["IPaddress"] = UserIP;
oldCookie.Values["Count"] = Count.ToString();
//不存在
smileModel.UpdateClickHot(ID);
Jscript.ShowAndRefresh(this, "投票成功!");
return;//Response.End();
}
}
else
{ //创建HttpCookie类型的对象并为它分配名称为userIP
HttpCookie newCookie = new HttpCookie("userIP");
//为Cookie的子项赋值,即将客户端IP地址赋给Cookie的子项,并将其命名为IPaddress
newCookie.Values.Add("IPaddress", UserIP);
newCookie.Values.Add("Count", "0");
//设置Cookie的失效期
newCookie.Expires = DateTime.Now.AddYears(1);
//将该Cookie添加到Cookies集合中
Response.Cookies.Add(newCookie); //不存在
smileModel.UpdateClickHot(ID);
Jscript.ShowAndRefresh(this, "投票成功!");
return;//Response.End();
}
if(oldCookie != null )再操作oldCookie ,
上面只是大致的思路,自己不能改改吗?