代码之家(www.adminjie.com)精品网站源码,微信源码,游戏源码分享平台。《交流群:1037940574》
当前位置:网站首页 技术文章 网页制作 正文

php实现统计IP数及在线人数的示例代码

时间:2020-07-28 [网页制作]作者:adminjie 浏览:209 次

写在前面的话

很多人有这样的需求,就是统计网站访问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_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,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_setpriority,imap_open,apache_setenv

使用宝塔面板

点击左侧软件管理,找到php,然后设置->禁用函数。

php实现统计IP数及在线人数的示例代码

删除putenv,然后重启php即可。

实现函数

在count.php同目录下创建文件:count,temp,online。新建文本文档count.txt,去掉扩展名即为count了;

linux系统中请设置文件属性为:777。

文件count.php代码,用到了php函数--explode、isset、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];  } else {  $total_c="$startno";  $yesterday_c="0";  $today_c="0";  $lastday="0";  }  if ( !isset($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";  else $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);  setcookie("countcookie","$day",$t_now+43200);  $fp=fopen("$file","w");  fputs($fp, "$total_c,$yesterday_c,$today_c,$lastday");  fclose($fp);  fclose($lockfile);  }  if ( empty( $your_c ) ) $your_c = 1;  setcookie("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);  $fp=fopen($filename,"w");  rewind($fp);  for($i=0;$i<$total_online;$i++){  fputs($fp,$nowonline[$i]);  fputs($fp,"n");  }  fclose($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("&nbsp;");";  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数及在线人数的示例代码

本文永久链接地址:https://www.adminjie.com/post/3377.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:点此维权 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 代码之家会员升级
  • 最新文章
  • 阿里云大优惠
  • 热门文章