写在前面的话
很多人有这样的需求,就是统计网站访问ip以及在线的人数。今天我们就看一下具体实现方法。
开启依赖函数模块
实现这个功能,需要依赖putenv()函数。下面两种方式均可。
更改php.ini文件方法
找到php.ini文件,搜索putenv关键字,删除即可。
isable_functions = passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_rest计算机等级考试查询成绩ore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,news可数吗pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_tpriority,imap_open,apache_tenv
使用宝塔面板
点击左侧软件管理,找到php,然后设置->禁用函数。
删除putenv,然后重启php即可。
实现函数
在count.php同目录下创建文件:count,temp,online。新建文本文档count.txt,去掉扩展名即为count了;
linux系统中请设置文件属性为:777。
文件count.php代码,用到了php函数–explode、ist、empty及sprintf等:
<?php$file = "count"; // 记数文件名称$startno = "1000"; // 起始数值$tempfile = "temp"; $t_now = time();$t_array = getdate($t_now);$day = $t_array['mday'];$mon = $成都路考t_array['mon'];$year = $t_array['year'];if (file_exists("$file")) { $count_info=file("$file"); $c_info = explode(",", $count_info[0]); $total_c=$c_info[0]; $yesterday_c=$c_info[1]; $today_c=$c_info[2]; $lastday=$c_info[3];} el { $total_c="$startno"; $yesterday_c="0"; $today_c="0"; $lastday="0";} if ( !ist($http_cookie_vars["countcookie"]) || $http_cookie_vars["countcookie"] != $day) { $your_c=1; $lockfile=fopen("temp","a"); flock($lockfile,3); putenv('tz=jst-9'); $t_array2 = getdate($t_now-24*3600); $day2=$t_array2['mday']; $mon2=$t_array2['mon']; $year2=$t_array2['year']; $today = "$year-$mon-$day"; $yesterday = "$year2-$mon2-$day2"; if ($today != $lastday) { if ($yesterday != $lastday) $yesterday_c = "0"; el $yesterday_c = $today_c; $today_c = 0; $lastday = $today; } $total_c++; $today_c++; $total_c = sprintf("%06d", $total_c); $today_c = sprintf("%06d", $today_c); $yesterday_c = sprintf("%06d", $yesterday_c); tcookie("countcookie","$day",$t_now+43200); $fp=fopen("$file","w"); fputs($fp, "$total_c,$yesterday_c,$today_c,$lastday"); fclo($fp); fclo($lockfile);}if ( empty( $your_c ) ) $your_c = 1;tcookie("yourcount",$your_c+1,$t_now+43200);$your_c = sprintf("%06d", $your_c);//////////////////////////开始统计在线$filename="online";$onlinetime=600; //同一ip在线时间,单位:秒$online_id=file($filename);$total_online=count($online_id);$ip=getenv("remote_addr");$nowtime=time(); for($i=0;$i<$total_online;$i++){ $oldip=explode("||",$online_id[$i]); $hasonlinetime=$nowtime-$oldip[0]; if($hasonlinetime<$onlinetime and $ip!=$oldip[1]) $nowonline[]=$online_id[$i]; } $nowonline[]=$nowtime."||".$ip."||"; $total_online=count($nowonline); jazz种类$fp=fopen($filename,"w"); rewind($fp); for($i=0;$i<$total_online;$i++){ fputs($fp,$nowonline[$i]); fputs($fp,"n"); } fclo($fp); if($total_online==0)$total_online=1; $total_online = sprintf("%06d", $total_online);///////////////////////////////////////////////////////echo "document.write("·总ip访问:".$total_c."");";echo "document.write("<br>");";echo "document.write("·昨日访问:".$yesterday_c."");";echo "document.write("<br>");";echo "document.write("今日ip:".$today_c."");";echo "document.write(" ");";echo "document.write("·您 访 问:".$your_c."");";echo "document.write("<br>五四班的新老师;");";echo "document.write("当前在线:".$total_online."");";exit;?>
调用
用js调用文件count.php
在需要加入统计的的地方,添加:
<script src="/php/count.php"></script>
到此这篇关于php实现统计ip数及在线人数的示例代码的文章就介绍到这了,更多相关php 统计ip数及在线人数内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-08 22:02:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/9976e00c7d4f551c5d6a8a39595ec665.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php实现统计IP数及在线人数的示例代码.doc
本文 PDF 下载地址:php实现统计IP数及在线人数的示例代码.pdf
留言与评论(共有 0 条评论) |