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

 更新时间:2020-08-16 23:20:40   作者:佚名   我要评论(0)

写在前面的话
很多人有这样的需求,就是统计网站访问IP以及在线的人数。今天我们就看一下具体实现方法。
开启依赖函数模块
实现这个功能,需要依赖putenv()函数。下

写在前面的话

很多人有这样的需求,就是统计网站访问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,然后设置->禁用函数。

删除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数及在线人数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

  • PHP实现统计在线人数功能示例
  • php简单统计在线人数的方法
  • PHP统计当前在线用户数实例讲解
  • php精确的统计在线人数的方法
  • php使用Session和文件统计在线人数
  • php实现统计网站在线人数的方法
  • php实现用户在线时间统计详解
  • php下统计用户在线时间的一种尝试

相关文章

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

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

    写在前面的话 很多人有这样的需求,就是统计网站访问IP以及在线的人数。今天我们就看一下具体实现方法。 开启依赖函数模块 实现这个功能,需要依赖putenv()函数。下
    2020-08-16
  • PHP代码覆盖率统计详解

    PHP代码覆盖率统计详解

    一 安装php环境 二 统计php代码覆盖率 1 需要安装xdebug 安装步骤: //www.jb51.net/article/116419.htm 测试环境 LNMP 军哥一键包1.3版本 PHP 7.0.7 Xdebug
    2020-08-16
  • PHP安全之register_globals的on和off的区别

    PHP安全之register_globals的on和off的区别

    一、register_globals=Off和register_globals=On的区别 register_globals是php.ini里的一个配置,这个配置影响到php如何接收传递过来的参数. register_globals的值可
    2020-08-16
  • php实现商城购物车的思路和源码分析

    php实现商城购物车的思路和源码分析

    本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值 这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是
    2020-08-16
  • php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)

    php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)

    记录每个赞的点赞用户,以及对赞的数量统计 首先判断用户是否点赞。根据是否点赞,载入不同的html,调用不同的方法 已点赞 如果已点赞,显示已点赞的html,
    2020-08-16
  • Laravel中如何轻松容易的输出完整的SQL语句

    Laravel中如何轻松容易的输出完整的SQL语句

    前言 laravel 中自带的查询构建方法 toSql 得到的 sql 语句并未绑定条件参数,类似于这样 select * fromuserswhereid= &#63; ,所以写了个扩展包 laravel-dump-sql
    2020-08-16
  • 关于PHP中interface的用处详解

    关于PHP中interface的用处详解

    确实,PHP 接口是有它的目的的。 它们是契约,是给其他开发人员的说明手册。然而,还是很难理解接口有什么用。 基础 接口是抽象的类,无法直接实例化,但是可被实现
    2020-08-16
  • PHP与Web页面的交互示例详解二

    PHP与Web页面的交互示例详解二

    前言 在《PHP学习笔记-PHP与Web页面的交互1》笔记中讲解了form表单的一些属性,包括它的输入域标记、选择域标记和文字域标记的写法,接下来的内容就是讲如何获取表单
    2020-08-16
  • jQuery+PHP实现图片上传并提交功能

    jQuery+PHP实现图片上传并提交功能

    图片上传思路:通过ajax实现图片上传,然后把PHP返回的图片地址,加入到隐藏字段中,最后通过表单提交给后台PHP,代码如下 HTML代码 zimg.html文件: <!DOCTYPE h
    2020-08-16
  • PHP网页缓存技术优点及代码实例

    PHP网页缓存技术优点及代码实例

    前台静态化:把动态页面解析后保存为静态页面 文件缓存:把查询结果保存为文件,XML 内存缓存:memcache php缓存器:XCache、eaccelerator等 Memcache是一个高性能的
    2020-08-16

最新评论