PHP实现访客次数的方法:1、创建两个数据库表;2、在要进行统计次数的页面上添加代码“$realip=getip();modifyipcount($realip);”即可。
本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。
1、需要两个数据库表
①、IP记录表
create table ip (ipid int(11) NOT NULL default '',ipdata varchar(16) NOT NULL default '',iptime varchar(30) NOT NULL default '', primary key(ipid));
注:ipdata为记录的访问者的ip,iptime为记录的该ip访问
create table count (todayipcount int(11) NOT NULL default '',allipcount int(11) NOT NULL default '',day varchar(2) NOT NULL default ''); insert into count (todayipcount,allipcount,day) values ('0','0','0');
2、实现方法
$realip=getip(); modifyipcount($realip);
function getip() { if (isset($_SERVER)) { if (isset($_SERVER[HTTP_X_FORWARDED_FOR]) && strcasecmp($_SERVER[HTTP_X_FORWARDED_FOR], unkNown))//代理 { $realip = $_SERVER[HTTP_X_FORWARDED_FOR]; } elseif(isset($_SERVER[HTTP_CLIENT_IP]) && strcasecmp($_SERVER[HTTP_CLIENT_IP], unkNown)) { $realip = $_SERVER[HTTP_CLIENT_IP]; } elseif(isset($_SERVER[REMOTE_ADDR]) && strcasecmp($_SERVER[REMOTE_ADDR], unkNown)) { $realip = $_SERVER[REMOTE_ADDR]; } else { $realip = 'unkNown'; } } else { if (getenv(HTTP_X_FORWARDED_FOR) && strcasecmp(getenv(HTTP_X_FORWARDED_FOR), unkNown)) { $realip = getenv(HTTP_X_FORWARDED_FOR); } elseif(getenv(HTTP_CLIENT_IP) && strcasecmp(getenv(HTTP_CLIENT_IP), unkNown)) { $realip = getenv(HTTP_CLIENT_IP); } elseif(getenv(REMOTE_ADDR) && strcasecmp(getenv(REMOTE_ADDR), unkNown)) { $realip = getenv(REMOTE_ADDR); } else { $realip = 'unkNown'; } } return $realip; }
function modifyipcount($ip) { <-----------------------数据库的连接省略-------------------------> $query=SELECT * FROM ip where ipdata='.$ip.'; $result=MysqL_query($query); $row=MysqL_fetch_array($result); $iptime=time(); $day=date('j'); if(!$row) { $query=INSERT INTO ip (ipdata,iptime) VALUES ('.$ip.','.$iptime.'); MysqL_query($query); $query=SELECT day,todayipcount,allipcount FROM count; $result=MysqL_query($query); $row=MysqL_fetch_array($result); $allipcount=$row['allipcount']+1; $todayipcount=$row['todayipcount']+1; if($day==$row['day']) { $query=UPDATE count SET allipcount='.$allipcount.',todayipcount='.$todayipcount.'; } else { $query=UPDATE count SET allipcount='.$allipcount.',day='.$day.',todayipcount='1'; } MysqL_query($query); } else { $query=SELECT iptime FROM ip WHERE ipdata='.$ip.'; $result=MysqL_query($query); $row=MysqL_fetch_array($result); $query=SELECT day,todayipcount,allipcount FROM count; $result=MysqL_query($query); $row1=MysqL_fetch_array($result); if($iptime-$row['iptime']>86400) { $query=UPDATE ip SET iptime='.$iptime.' WHERE ipdata='.$ip.'; MysqL_query($query); $allipcount=$row1['allipcount']+1; if($day==$row1['day']) { $query=UPDATE count SET allipcount='.$allipcount.'; } else { $query=UPDATE count SET allipcount='.$allipcount.',day='.$day.',todayipcount='1'; } MysqL_query($query); } if($day!=$row1['day']) { $query=UPDATE count SET day='.$day.',todayipcount='1'; MysqL_query($query); } } }
这样我们调用数据库表count中的todayipcount和allipcount就可以得到今日访问IP和总访问IP,个人觉得是很准确的,欢迎大家有不同意见提出。
推荐学习:《PHP教程》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。