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


Posted in PHP onJuly 22, 2020

写在前面的话

很多人有这样的需求,就是统计网站访问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(" ");";
echo "document.write("·您 访 问:".$your_c."");";
echo "document.write("<br>");";
echo "document.write("当前在线:".$total_online."");";
exit;
?>

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

调用

用JS调用文件count.php

在需要加入统计的的地方,添加:

<script src="/php/count.php"></script>

到此这篇关于php实现统计IP数及在线人数的示例代码的文章就介绍到这了,更多相关php 统计IP数及在线人数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
Apr 20 PHP
如何通过PHP实现Des加密算法代码实例
May 09 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 21 #PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 #PHP
浅谈php常用的7大框架的优缺点
Jul 20 #PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 #PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 #PHP
PHP+MySql实现一个简单的留言板
Jul 19 #PHP
PHP8.0新功能之Match表达式的使用
Jul 19 #PHP
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
PHP Document 代码注释规范
2009/04/13 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
Python迭代用法实例教程
2014/09/08 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
python读取文件名并改名字的实例
2019/01/07 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
pytorch中index_select()的用法详解
2021/01/06 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
世界上超棒的8种逻辑思维
2019/08/06 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
JS实现数组去重的11种方法总结
2022/04/04 Javascript