- <?php
- function getIpAddress() { // 取得当前用户的IP地址
- $ip = '127.0.0.1';
- if(isset($_SERVER)){
- if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
- $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
- }else if(isset($_SERVER["HTTP_CLIENT_IP"])) {
- $ip = $_SERVER["HTTP_CLIENT_IP"];
- }else{
- $ip = $_SERVER["REMOTE_ADDR"];
- }
- }else{
- if(getenv("HTTP_X_FORWARDED_FOR")){
- $ip = getenv("HTTP_X_FORWARDED_FOR");
- }else if(getenv("HTTP_CLIENT_IP")) {
- $ip = getenv("HTTP_CLIENT_IP");
- }else{
- $ip = getenv("REMOTE_ADDR");
- }
- }
- return $ip;
- }
- function writeover($filename, $data, $method = 'w', $chmod = 0) {
- $handle = fopen ( $filename, $method );
- ! handle && die ( "文件打开失败" );
- flock ( $handle, LOCK_EX );
- fwrite ( $handle, $data );
- flock ( $handle, LOCK_UN );
- fclose ( $handle );
- $chmod && @chmod ( $filename, 0777 );
- }
- function count_online_num($time, $ip) {
- $fileCount = './count.txt';
- $count = 0;
- $gap = 900; // 15分钟页面不刷新清空对应IP
- if (! file_exists ( $fileCount )) {
- $str = $time . "\t" . $ip . "\r\n";
- writeover ( $fileCount, $str, 'w', 1 );
- $count = 1;
- } else {
- $arr = file ( $fileCount );
- $flag = 0;
- foreach ( $arr as $key => $val ) {
- $val = trim ( $val );
- if ($val != "") {
- list ( $when, $seti ) = explode ( "\t", $val );
- if ($seti == $ip) {
- $arr [$key] = $time . "\t" . $seti;
- $flag = 1;
- } else {
- $currentTime = time ();
- if ($currentTime - $when > $gap) {
- unset ( $arr [$key] );
- } else {
- $arr [$key] = $val;
- }
- }
- }
- }
- if ($flag == 0) {
- array_push ( $arr, $time . "\t" . $ip );
- }
- $count = count ( $arr );
- $str = implode ( "\r\n", $arr );
- $str .= "\r\n";
- writeover ( $fileCount, $str, 'w', 0 );
- unset ( $arr );
- }
- return $count;
- }
- $time = time ();
- $ip = getIpAddress ();
- $online_num = count_online_num ( $time, $ip );
- echo $online_num;
- ?>
<?php function getIpAddress() { // 取得当前用户的IP地址 $ip = '127.0.0.1'; if(isset($_SERVER)){ if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }else if(isset($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; }else{ $ip = $_SERVER["REMOTE_ADDR"]; } }else{ if(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }else if(getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); }else{ $ip = getenv("REMOTE_ADDR"); } } return $ip; } function writeover($filename, $data, $method = 'w', $chmod = 0) { $handle = fopen ( $filename, $method ); ! handle && die ( "文件打开失败" ); flock ( $handle, LOCK_EX ); fwrite ( $handle, $data ); flock ( $handle, LOCK_UN ); fclose ( $handle ); $chmod && @chmod ( $filename, 0777 ); } function count_online_num($time, $ip) { $fileCount = './count.txt'; $count = 0; $gap = 900; // 15分钟页面不刷新清空对应IP if (! file_exists ( $fileCount )) { $str = $time . "\t" . $ip . "\r\n"; writeover ( $fileCount, $str, 'w', 1 ); $count = 1; } else { $arr = file ( $fileCount ); $flag = 0; foreach ( $arr as $key => $val ) { $val = trim ( $val ); if ($val != "") { list ( $when, $seti ) = explode ( "\t", $val ); if ($seti == $ip) { $arr [$key] = $time . "\t" . $seti; $flag = 1; } else { $currentTime = time (); if ($currentTime - $when > $gap) { unset ( $arr [$key] ); } else { $arr [$key] = $val; } } } } if ($flag == 0) { array_push ( $arr, $time . "\t" . $ip ); } $count = count ( $arr ); $str = implode ( "\r\n", $arr ); $str .= "\r\n"; writeover ( $fileCount, $str, 'w', 0 ); unset ( $arr ); } return $count; } $time = time (); $ip = getIpAddress (); $online_num = count_online_num ( $time, $ip ); echo $online_num; ?>
效果图:
相关推荐
这是一个非常精确的,通过php实现统计在线人数的方法,想知道怎么实现的请耐心阅读。 <?php $filename='online.txt';//数据文件 $cookiename='VGOTCN_OnLineCount';//cookie名称 $onlinetime=600;//在线有效时间...
PHP+TXT在线人数统计
本资源是相关php技术的在线人数统计-图形版,可方便初学者学习php技术,直接添加到网站中
主要介绍了PHP实现统计在线人数功能,结合实例形式分析了php基于session对象计算与统计在线人数的相关操作技巧,需要的朋友可以参考下
统计在线人数。 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样如果同一个局域网的无论多少人人访问你的网站则只被...
可以统计软件当前在线人数,非常方便只要GET这个地址就可以了,可以被多种语言所调用。
可实现统计当前网站在线人数,以及历史最高在线人数。 安装方法: 将本文件放在插入文件的同目录下(具体放置位置自行调节) 在需要显示的地方插入代码: <script src="./BranDoc_Online.php"></script> 显示描述:...
PHP统计当前在线人数 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP 7中的文件操作函数对文件内容进行写入和读取,...
主要介绍了php简单统计在线人数的方法,涉及php针对文本文件的读写与相关数学运算技巧,需要的朋友可以参考下
PHP在线人数统计.pdf
PHP实例开发源码—梦缘PHP在线人数统计.zip PHP实例开发源码—梦缘PHP在线人数统计.zip PHP实例开发源码—梦缘PHP在线人数统计.zip
基于PHP的梦缘PHP在线人数统计.zip
自己写的一个利用IP统计访问人数,防刷新。虽然不是很完美,但是还是可能给大家借鉴参考使用。随着技术不断更新估计也用不上了这个功能!
图2 案例结果图(当前在线人数)备注:由于此程序是通过统计在线的IP数来实现统计当前在线人数的,因此此种方式具有的局限性是:同一个局域网内的无论多少人访问此网站
基于PHP的梦缘PHP在线人数统计源码.zip
统计在线人数。 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确 例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样 如果同一个局域网的无论多少人人访问你的网站则...