将此段代码放入网站的母版页或者header的用户控件中。
private void AccessRecord() { string ip = Request.UserHostAddress; string ipDataPath = Server.MapPath("QQWry.Dat");//纯真ip数据库http://www.cz88.net Fireicesion.WebTools.IpAddressSearch ipSearch = new Fireicesion.WebTools.IpAddressSearch(ipDataPath);//前一篇随笔中的根据ip获取地址 string address = ipSearch.GetAddressWithIP(ip); if (CheckRecord(ip)) { string sql = "insert into AccessRecord (ip,address,recordtime) values('" + ip + "','" + address + "','" + DateTime.Now.ToString() + "')"; DB.Insert(sql); } } /// <summary> /// 上次访问时间,true可记录,false不记录 /// </summary> /// <param name="ip"></param> /// <returns></returns> private bool CheckRecord(string ip) { string sql = "select * from AccessRecord where ip='" + ip + "' order by RecordTime desc limit 0,1"; DataTable dt = DB.GetDataTable(sql); if (dt.Rows.Count == 0)//没有找到记录,此IP未曾访问过 return true; else { DateTime lastTime = Convert.ToDateTime(dt.Rows[0]["RecordTime"]); DateTime now = DateTime.Now; TimeSpan timeSpan = new TimeSpan(0, 30, 0);//半个小时内访问不重复记录 if (lastTime.Add(timeSpan).CompareTo(now) == -1) { return true; } return false; } }
数据库表(MySql格式的)
CREATE TABLE `accessrecord` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Ip` varchar(80) DEFAULT NULL, `Address` varchar(100) DEFAULT NULL, `Recordtime` datetime DEFAULT '2000-01-01 00:00:00', PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8;