$link=mysql_connect('localhost','root','123456')or die("could not connect :".mysql_error());//连接数库
mysql_select_db("erp") or die("could not select database");//选择数据库
?>
<? $iipp=$_SERVER['REMOTE_ADDR'];//获取当前链接用户IP地址
$iptime=date("Y-m-d H:i:s");//攻取当前访问的时间
$sqlstr="select * from ipaddr where ip='$iipp'";//查寻此IP地址是否已经入库存 ipaddr是数据库的表名,ip字段记载IP地址
$result=mysql_query($sqlstr,$link);//执行查寻ip=$iipp查寻
$row=mysql_fetch_array($result,MYSQL_BOTH);//获取ipaddr的查寻结果
if ($row[ip]){//判断IP地址是否存在
$subtime=(strtotime($iptime)-strtotime($row[iptime]))/60;//页面最新时间与ipaddr入库的ip时间相减的结果,除以60秒,计算结果为分钟.
//echo $subtime."<br>";
$setsubtime=10;//间隔时间(分钟)
//echo $subtime; 测试时间
if($subtime>$setsubtime){//比较间隔时间结果
$degree=$row[degree]+1;//ipaddr表中的计算器+1的结果送往计数器
$query="update ipaddr set iptime='$iptime',degree='$degree' where ip='$iipp'";//给每个IP一个计数器,入库后iptime为最新时间
$resultipaddr=mysql_query($query,$link);//执行入库
$sqlstrcounter="select counter from ipcounter where ipenter='ip'";//查寻ipcounter表中字段ipenter等于'ip'的结果
$resultcounter=mysql_query($sqlstrcounter,$link);//执行查寻
$row=mysql_fetch_array($resultcounter,MYSQL_BOTH);//获得ipcounter表中的数据.
$counter=$row[counter]+1;//ipcounter中的counter字段值增加1,也就是访问网页的次数加1
$sqlstrcounter="update ipcounter set counter=$counter where ipenter='ip'";//网页访问次数修改为最新访问次数
$resultcounterinto=mysql_query($sqlstrcounter,$link);//执行修改次数
mysql_free_result($result);//释放ipaddr表内存
mysql_free_result($resultcounter);//释放ipcounter表内存
mysql_close($link);//关闭数据库
}
else{
$degree=$row[degree];//统计IP地址访问次数
$sqlstrcounter="select counter from ipcounter where ipenter='ip'";//查寻ipcounter表中字段ipenter等于'ip'的结果
$resultcounter=mysql_query($sqlstrcounter,$link);//执行查寻
$row=mysql_fetch_array($resultcounter,MYSQL_BOTH);//获得ipcounter表中的数据.
$counter=$row[counter];//ipcounter中的counter字段值增加1,也就是访问网页的次数加1
mysql_free_result($resultcounter);////释放ipcounter表内存
mysql_free_result($result);//释放ipaddr表内存
mysql_close($link);//关闭数据库
}
}
else{
$degree=1;//第一次访问的IP地址,计算器准备加1
$query="insert into ipaddr(serial,ip,iptime,degree) VALUES('','$iipp','$iptime','$degree')";//插入一条刚刚访问IP地址的入库
$resultipaddr=mysql_query($query,$link);//执行插入结果
$sqlstrcounter="select counter from ipcounter where ipenter='ip'";//查寻counter表中的字段ipenter为'ip'的结果.
$resultcounter=mysql_query($sqlstrcounter,$link);//执行查寻
$row=mysql_fetch_array($resultcounter,MYSQL_BOTH);//获取counter结果
$counter=$row[counter]+$degree;//对第一次的访问的IP计算器加1,写入数据库
$sqlstrcounter="update ipcounter set counter=$counter where ipenter='ip'";//修改计数器结果
$resultcounterinto=mysql_query($sqlstrcounter,$link);//执行操作
mysql_free_result($result);//释放ipaddr表内存
mysql_free_result($resultcounter);//释放ipcounter表内存
mysql_close($link);//关闭数据库
}
?>
表1:
-- phpMyAdmin SQL Dump
-- version 2.9.0.2
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2007 年 06 月 06 日 14:54
-- 服务器版本: 5.0.24
-- PHP 版本: 5.1.6
--
-- 数据库: 'erp'
--
-- --------------------------------------------------------
--
-- 表的结构 'ipaddr'
--
CREATE TABLE ipaddr (
`serial` int(10) unsigned NOT NULL auto_increment,
ip varchar(15) NOT NULL,
iptime datetime NOT NULL,
degree tinyint(8) unsigned NOT NULL,
PRIMARY KEY (`serial`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- 导出表中的数据 'ipaddr'
--
表2:
-- phpMyAdmin SQL Dump
-- version 2.9.0.2
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2007 年 06 月 06 日 14:57
-- 服务器版本: 5.0.24
-- PHP 版本: 5.1.6
--
-- 数据库: 'erp'
--
-- --------------------------------------------------------
--
-- 表的结构 'ipcounter'
--
CREATE TABLE ipcounter (
counter int(10) unsigned NOT NULL,
ipenter varchar(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
10 个解决方案
#1
嗯~不错,收下...........
#2
路过
#3
收藏
#4
我觉得不好.你没考虑到页面的效率问题.当很多人访问这个页面,会很慢..你要查数据库以及更新字段....这样不好.建议读取apache日志的方法...
#5
很认真,很仔细,没考虑实际应用,抱歉。
#6
不错,对访问量不大的网站,还是可以的。
#7
数据库表缺少索引
另外代码可否封装一下,逻辑看得不是很清楚。
另外代码可否封装一下,逻辑看得不是很清楚。
#8
楼上几位分析的也有理,对小网站还是不错的
#9
顶一个
#10
收藏了
#1
嗯~不错,收下...........
#2
路过
#3
收藏
#4
我觉得不好.你没考虑到页面的效率问题.当很多人访问这个页面,会很慢..你要查数据库以及更新字段....这样不好.建议读取apache日志的方法...
#5
很认真,很仔细,没考虑实际应用,抱歉。
#6
不错,对访问量不大的网站,还是可以的。
#7
数据库表缺少索引
另外代码可否封装一下,逻辑看得不是很清楚。
另外代码可否封装一下,逻辑看得不是很清楚。
#8
楼上几位分析的也有理,对小网站还是不错的
#9
顶一个
#10
收藏了