写在前面的话

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

调用

用JS调用文件count.php

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

php站长统计,php实现统计IP数及在线人数的示例代码相关推荐

  1. java程序利用HttpSessionListener实现统计在线人数(示例代码)

    HttpSessionListener是个session监听器,它有两个方法:publicvoidsessionCreated(HttpSessionEventevent){}和publicvoids ...

  2. java 4-5随机数_例4-5 猜数游戏 产生随机数(示例代码)

    例4-5 猜数游戏 产生随机数 改例3-1.自动生成随机数. 程序核心--srand(time(0));//刷新随机数 mynumber=rand()%100+1;//产生随机数 程序 #includ ...

  3. 网站分析平台:百度统计、谷歌统计、网数星,统计平台怎样选择?

    当你拥有个人博客或个人网站时,你一定需要一个平台来分析你的网站状况.之前我在法国只是使用 Google Analytics,后来回国发现这个平台在国内受限制了,于是我找到了百度统计,目前我同时使用这三 ...

  4. SQLSERVER中统计所有表的记录数

    SQLSERVER中统计所有表的记录数 利用系统索引表sysindexes中索引ID indid<1的行中的rows列存有该表的行数这一特点.    方法是利用隐藏未公开的系统存储过程sp_MS ...

  5. python如何统计出现的次数_Python统计日志中每个IP出现次数的方法

    本文实例讲述了Python统计日志中每个IP出现次数的方法.分享给大家供大家参考.具体如下: 这脚本可用于多种日志类型,本人测试MDaemon的all日志文件大小1.23G左右,分析用时2~3分钟 代 ...

  6. 解析统计文本文件中的字符数、单词数、行数。

    用android 编程解析统计文本文件中的字符数.单词数.行数(作业) 主要代码 ... private void analysis() { String str = " "; i ...

  7. C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。

    )输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出. [输入] 第一行包含一个整数n,表示数组的大小. 第二行包含n个整数,表示数组的元素,整数之间以一个 ...

  8. 按分数段统计学生人数python_用Excel统计各分数段学生数

    用 Excel 统计各分数段学生数 方法一:用 COUNTIF 函数统计 这是最常用.最容易理解的一种方法,我们用它来统计"语文"学科各分数段学生数. 如果某些学科 (如体育) , ...

  9. python两个表格相同数据筛选_python如何统计所有文本文件的行数 如何用python实现两个文件重复数据筛选并统计...

    如何用python统计文本中重复行的数目? python比较txt文档中每行文本之间重复词的个数不想面对他离开,逃避不是一个好方法,但却是唯一的办法. 每一行弄成一个集合,分享两个集合之间的交集,计算 ...

最新文章

  1. 关于StartCoroutine的简单线程使用
  2. 同域内测试蠕虫的一种方法
  3. Java线程状态及 wait、sleep、join、interrupt、yield等的区别
  4. 计算氦原子的基态能级
  5. Bootstrap日期插件之Datetimepicker修改默认语言(附带源码)
  6. php输出的数组如何存入表单,jquery:如何在jquery中将数组附加到表单请求并将其发送到php...
  7. 改造房车走天下,这个阿里妹子不一般
  8. VB.NET工作笔记009---硬件设备写码工具编写_使用串口通信_发送AT指令
  9. Python接口自动化-接口基础(二)
  10. 计算机出现假桌面怎么解决办法,Win10系统桌面频繁假死的解决方法
  11. 清华计算机系女生每天看这些公众号
  12. 使用NATAPP内网穿透
  13. Itextpdf5 基础知识
  14. 平面几何----笛沙格定理及其应用
  15. 【STM32G431RBTx】备战蓝桥杯嵌入式→基本模块→I2C→M24C02
  16. 痛与快乐有一个代码是什么_痛苦与快乐
  17. SQL 中的 COALESCE 函数初学者指南
  18. Win10怎么安装旧版组件DirectPlay?
  19. 海南大学考研英语经验(电子信息085400)
  20. gaussdb200 常用函数

热门文章

  1. 操作系统PV操作伪代码(小和尚提水、老和尚饮水问题)
  2. 魅族手机安装app,显示应用未安装
  3. IDEA中HTML标签替换成Thymeleaf标签
  4. MySQL创建数据库(CREATE DATABASE语句)
  5. 大数据千亿级离线数仓项目第五天 指标统计/导出和工作流调度
  6. OpenGL高级-GLSL
  7. 2020P气瓶充装操作证考试及P气瓶充装模拟考试软件
  8. UDP和TCP的报文详解
  9. 从剑侠世界看手游MMORPG
  10. 雄安,杭州政府自建区块链底层平台 自建、外包、加入三种模式谁是未来