`

PHP 统计在线人数

    博客分类:
  • php
 
阅读更多
  1. <?php   
  2. function getIpAddress() { // 取得当前用户的IP地址   
  3.     $ip = '127.0.0.1';   
  4.     if(isset($_SERVER)){   
  5.         if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){   
  6.             $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];   
  7.         }else if(isset($_SERVER["HTTP_CLIENT_IP"])) {   
  8.             $ip = $_SERVER["HTTP_CLIENT_IP"];   
  9.         }else{   
  10.             $ip = $_SERVER["REMOTE_ADDR"];   
  11.         }   
  12.     }else{   
  13.         if(getenv("HTTP_X_FORWARDED_FOR")){   
  14.             $ip = getenv("HTTP_X_FORWARDED_FOR");   
  15.         }else if(getenv("HTTP_CLIENT_IP")) {   
  16.             $ip = getenv("HTTP_CLIENT_IP");   
  17.         }else{   
  18.             $ip = getenv("REMOTE_ADDR");   
  19.         }   
  20.     }   
  21.     return $ip;   
  22. }   
  23. function writeover($filename, $data, $method = 'w', $chmod = 0) {   
  24.     $handle = fopen ( $filename, $method );   
  25.     ! handle && die ( "文件打开失败" );   
  26.     flock ( $handle, LOCK_EX );   
  27.     fwrite ( $handle, $data );   
  28.     flock ( $handle, LOCK_UN );   
  29.     fclose ( $handle );   
  30.     $chmod && @chmod ( $filename, 0777 );   
  31. }   
  32. function count_online_num($time, $ip) {   
  33.     $fileCount = './count.txt';   
  34.     $count = 0;   
  35.     $gap = 900// 15分钟页面不刷新清空对应IP   
  36.     if (! file_exists ( $fileCount )) {   
  37.         $str = $time . "\t" . $ip . "\r\n";   
  38.         writeover ( $fileCount, $str, 'w'1 );   
  39.         $count = 1;   
  40.     } else {   
  41.         $arr = file ( $fileCount );   
  42.         $flag = 0;   
  43.         foreach ( $arr as $key => $val ) {   
  44.             $val = trim ( $val );   
  45.             if ($val != "") {   
  46.                 list ( $when, $seti ) = explode ( "\t", $val );   
  47.                 if ($seti == $ip) {   
  48.                     $arr [$key] = $time . "\t" . $seti;   
  49.                     $flag = 1;   
  50.                 } else {   
  51.                     $currentTime = time ();   
  52.                     if ($currentTime - $when > $gap) {   
  53.                         unset ( $arr [$key] );   
  54.                     } else {   
  55.                         $arr [$key] = $val;   
  56.                     }   
  57.                 }   
  58.             }   
  59.         }   
  60.         if ($flag == 0) {   
  61.             array_push ( $arr, $time . "\t" . $ip );   
  62.         }   
  63.         $count = count ( $arr );   
  64.         $str = implode ( "\r\n", $arr );   
  65.         $str .= "\r\n";   
  66.         writeover ( $fileCount, $str, 'w'0 );   
  67.         unset ( $arr );   
  68.     }   
  69.     return $count;   
  70. }   
  71. $time = time ();   
  72. $ip = getIpAddress ();   
  73. $online_num = count_online_num ( $time, $ip );   
  74. echo $online_num;   
  75. ?>  
<?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实现统计在线人数的方法,想知道怎么实现的请耐心阅读。 &lt;?php $filename='online.txt';//数据文件 $cookiename='VGOTCN_OnLineCount';//cookie名称 $onlinetime=600;//在线有效时间...

    PHP+TXT在线人数统计

    PHP+TXT在线人数统计

    PHP在线人数统计-图形版

    本资源是相关php技术的在线人数统计-图形版,可方便初学者学习php技术,直接添加到网站中

    PHP实现统计在线人数功能示例

    主要介绍了PHP实现统计在线人数功能,结合实例形式分析了php基于session对象计算与统计在线人数的相关操作技巧,需要的朋友可以参考下

    php在线人数统计程序 v1.0

    统计在线人数。 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样如果同一个局域网的无论多少人人访问你的网站则只被...

    统计软件当前在线人数PHP代码,可用易语言调用。

    可以统计软件当前在线人数,非常方便只要GET这个地址就可以了,可以被多种语言所调用。

    php+txt在线人数最高人数统计源码

    可实现统计当前网站在线人数,以及历史最高在线人数。 安装方法: 将本文件放在插入文件的同目录下(具体放置位置自行调节) 在需要显示的地方插入代码: &lt;script src="./BranDoc_Online.php"&gt;&lt;/script&gt; 显示描述:...

    PHP统计当前在线人数

    PHP统计当前在线人数 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP 7中的文件操作函数对文件内容进行写入和读取,...

    php简单统计在线人数的方法

    主要介绍了php简单统计在线人数的方法,涉及php针对文本文件的读写与相关数学运算技巧,需要的朋友可以参考下

    PHP在线人数统计.pdf

    PHP在线人数统计.pdf

    PHP实例开发源码-梦缘PHP在线人数统计.zip

    PHP实例开发源码—梦缘PHP在线人数统计.zip PHP实例开发源码—梦缘PHP在线人数统计.zip PHP实例开发源码—梦缘PHP在线人数统计.zip

    基于PHP的梦缘PHP在线人数统计.zip

    基于PHP的梦缘PHP在线人数统计.zip

    PHP利用IP统计访问人数,防刷新

    自己写的一个利用IP统计访问人数,防刷新。虽然不是很完美,但是还是可能给大家借鉴参考使用。随着技术不断更新估计也用不上了这个功能!

    PHP统计当前在线人数1

    图2 案例结果图(当前在线人数)备注:由于此程序是通过统计在线的IP数来实现统计当前在线人数的,因此此种方式具有的局限性是:同一个局域网内的无论多少人访问此网站

    基于PHP的梦缘PHP在线人数统计源码.zip

    基于PHP的梦缘PHP在线人数统计源码.zip

    php在线人数统计程序 v1.0.rar

    统计在线人数。 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确 例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样 如果同一个局域网的无论多少人人访问你的网站则...

Global site tag (gtag.js) - Google Analytics