网站统计流量如何防刷新 我这有参考思路: 用cookie记录用户并设置过期时间,没有过期时同一ip示为一次访问(数据库中放一时间字段,.比较ip时间差) 请各位帮帮忙,提供一点好的实现方法或者思路!!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要用cookie,保存在客户端用户能控制的 数据库加个ip表,在更新流量前判断这个ip是否已经访问过.不过重新启动路游换过ip的话又可以投了.做得绝一点就判断整个ip段 嗯对.cookie是可以清除的用IP限制就好了,但如果别人是adsl呢?所以最好是二者结合 那我可以把同一ip最后访问的时间取出来(假设我放了时间字段),可是怎么和cookie的过期时间比较呢!先判断存在不存在cookie,然后如果有就取他的过期时间,在比较么? 网站日访问量(书中源代码)<script runat="server"> //保存从文本中读取的信息 public static string strs; //记录文本中访问时间 public static string day; void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Application["counter"] = 0; Application["day"] = DateTime.Now.ToString(); } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 int Stat = 0; Stat = (int)Application["counter"]; //保存日期 string day0 = (string)Application["day"]; string str = Stat.ToString() + "," + day0.ToString() ; // 将数据记录写入文件 string file_path = Server.MapPath("counter.txt"); StreamWriter srw = new StreamWriter(file_path, false); srw.WriteLine(str); srw.Close(); } void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e) { //在新会话启动时运行的代码 Application.Lock(); int count;// 记录文本中的日访问量 string NowDay; //记录文本中访问时间 StreamReader srd; string file_path = Server.MapPath("counter.txt"); //取得文件的实际路径 srd = File.OpenText(file_path); //打开文件进行读取 while (srd.Peek() != -1) { strs = srd.ReadLine(); //保存从文件中读取的信息 } srd.Close(); string[] str = strs.Split(','); //将读取的信息存放在字符串数组str中 count = Convert.ToInt32(str[0]); //日访问量 day = str[1]; //最近一次访问时间 NowDay = DateTime.Now.ToString(); //文件中保存的时间值与系统时间相比,如果系统时间大,则重新开始计数 if (DateTime.Compare(Convert.ToDateTime(NowDay), Convert.ToDateTime(day)) >= 0) { count = 0; day = DateTime.Now.AddDays(1).ToShortDateString() + " " + "00:00:00"; //day保存下一天的开始时间 string NewDayStr = "0" + "," + day.ToString(); // 将数据记录写入文件 //string file_path0 = Server.MapPath("counter.txt"); StreamWriter srw0 = new StreamWriter(file_path, false); srw0.WriteLine(NewDayStr); srw0.Close(); } object objcount = count; object objday = day; //日访问量 Application["counter"] = objcount; //最近一次访问时间 Application["day"] = objday; // 数据累加 int Stat = 0; //获取Application对象中的日访问量 Stat = (int)Application["counter"]; Stat += 1; object obj = Stat; Application["counter"] = obj; //保存日期 string day0 = (string)Application["day"]; string str0 = obj.ToString() + "," + day0.ToString(); // 将数据记录写入文件 //string file_path0 = Server.MapPath("counter.txt"); StreamWriter srw1 = new StreamWriter(file_path, false); srw1.WriteLine(str0); srw1.Close(); Application.UnLock(); } void Session_End(object sender, EventArgs e) { // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer // 或 SQLServer,则不会引发该事件。 } </script> To:zongyajun 这是什么书啊,介绍看一下 asp.net 程序开发 范例宝典 急!safari不支持magicajax?? ASP HTML控件 table表格 怎么有效使表格里面的控件在IE运行后还是保持不变呢 请教高手一个关于datalist中嵌套按钮的问题 急~~ CutBug 请来领100分,共300分! GridView 问题 请问斑主,为什么这样也会被扣信誉分? 大家来说说 Csdn 的 Blog 能上传文件吗? IE下载文件的问题,FF正常。 如何将DataSet的内容(是二进制的)写到文件中 请帮我看看这个问题! 求教一个网站登陆的问题
做得绝一点就判断整个ip段
用IP限制就好了,但如果别人是adsl呢?
所以最好是二者结合
先判断存在不存在cookie,然后如果有就取他的过期时间,在比较么?
//保存从文本中读取的信息
public static string strs;
//记录文本中访问时间
public static string day;
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["counter"] = 0;
Application["day"] = DateTime.Now.ToString();
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
int Stat = 0;
Stat = (int)Application["counter"];
//保存日期
string day0 = (string)Application["day"];
string str = Stat.ToString() + "," + day0.ToString() ;
// 将数据记录写入文件
string file_path = Server.MapPath("counter.txt");
StreamWriter srw = new StreamWriter(file_path, false);
srw.WriteLine(str);
srw.Close();
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
} void Session_Start(object sender, EventArgs e)
{ //在新会话启动时运行的代码
Application.Lock();
int count;// 记录文本中的日访问量
string NowDay; //记录文本中访问时间
StreamReader srd;
string file_path = Server.MapPath("counter.txt"); //取得文件的实际路径
srd = File.OpenText(file_path); //打开文件进行读取
while (srd.Peek() != -1)
{
strs = srd.ReadLine(); //保存从文件中读取的信息
}
srd.Close();
string[] str = strs.Split(','); //将读取的信息存放在字符串数组str中
count = Convert.ToInt32(str[0]); //日访问量
day = str[1]; //最近一次访问时间
NowDay = DateTime.Now.ToString();
//文件中保存的时间值与系统时间相比,如果系统时间大,则重新开始计数
if (DateTime.Compare(Convert.ToDateTime(NowDay), Convert.ToDateTime(day)) >= 0)
{
count = 0;
day = DateTime.Now.AddDays(1).ToShortDateString() + " " + "00:00:00"; //day保存下一天的开始时间
string NewDayStr = "0" + "," + day.ToString();
// 将数据记录写入文件
//string file_path0 = Server.MapPath("counter.txt");
StreamWriter srw0 = new StreamWriter(file_path, false);
srw0.WriteLine(NewDayStr);
srw0.Close();
}
object objcount = count;
object objday = day;
//日访问量
Application["counter"] = objcount;
//最近一次访问时间
Application["day"] = objday;
// 数据累加
int Stat = 0;
//获取Application对象中的日访问量
Stat = (int)Application["counter"];
Stat += 1;
object obj = Stat;
Application["counter"] = obj;
//保存日期
string day0 = (string)Application["day"];
string str0 = obj.ToString() + "," + day0.ToString();
// 将数据记录写入文件
//string file_path0 = Server.MapPath("counter.txt");
StreamWriter srw1 = new StreamWriter(file_path, false);
srw1.WriteLine(str0);
srw1.Close();
Application.UnLock();
} void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。 }
</script>