`

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统计在线人数功能涉及到多个方面的知识,包括Session的管理、数据库操作、自定义session处理器的编写以及PHP配置文件的修改。掌握了这些知识点,就能够根据实际需要,灵活地编写出适用于不同场景的...

    PHP+TXT在线人数统计

    【PHP+TXT在线人数统计】是一种常见的网站访问统计方法,主要通过PHP脚本与文本文件(TXT)交互来实现对当前在线用户数量的实时记录。这种方法适用于小型网站或个人项目,因为它简单易行且资源消耗较低。下面我们将...

    PHP在线人数统计-图形版

    【PHP在线人数统计-图形版】是一个专门为初学者设计的学习资源,旨在教授如何在网站上实现用户在线人数的实时统计并以图形化的方式展示。这个教程涵盖了PHP编程语言的基础知识,以及与网络交互和数据可视化相关的...

    php精确的统计在线人数的方法

    在PHP中,精确地统计在线人数是一个常见的需求,特别是在构建Web应用程序时,了解当前有多少用户活跃对于优化用户体验和资源管理至关重要。以下是一个基于文件存储和Cookie实现的在线人数统计方法: 首先,我们需要...

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

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

    PHP统计当前在线人数

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

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

    本文详细介绍了使用PHP简单统计在线人数的方法,主要包含以下知识点: 1. 文件操作:PHP中的文件操作包括读取、写入以及文件锁定等。在统计在线人数的过程中,通常需要将用户的IP地址和最后活动时间保存在文件中。...

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

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

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

    【标题】:“基于PHP的梦缘PHP在线人数统计”指的是一个使用PHP编程语言实现的在线用户统计系统。这个系统能够实时或定期统计网站上当前同时在线的用户数量,为网站运营者提供关于用户活跃度的重要数据。 【描述】...

    PHP统计当前在线人数1

    【PHP统计当前在线人数】是一种常见的网站功能,用于实时显示网站的活跃用户数量。本文将详细介绍如何使用PHP实现这一功能。 首先,开发环境是关键。在这个案例中,使用了Windows 7操作系统,配合Apache 2.4.18作为...

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

    在PHP编程中,统计网站访问人数并防止恶意刷新是一个常见的需求。这个场景通常涉及到服务器端的数据处理和用户行为分析。以下是对"PHP利用IP统计访问人数,防刷新"这一主题的详细解读: 首先,我们需要理解如何统计...

    php获取在线人数

    在PHP中获取在线人数是一项常见的需求,这涉及到网站统计和用户行为分析。下面将详细讲解如何实现这个功能,以及相关的知识点。 首先,我们要理解“在线人数”通常指的是在一定时间范围内(比如最近5分钟或更短)有...

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

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

    基于PHP的在线人数统计程序.zip

    【标题】:“基于PHP的在线人数统计程序” 这个标题揭示了我们要讨论的核心技术——PHP,以及具体的应用场景:在线人数统计。PHP是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发,能够嵌入到HTML中,实现...

    PHP在线人数统计.pdf

    在给定的文件【标题】:"PHP在线人数统计.pdf"和【描述】中,重点阐述了使用PHP和MySQL实现网站在线人数统计的技术要点。通过内容片段可以提炼出如下知识点: 1. 数据库设计:文档中首先展示了创建一个名为...

    Ajax做的统计在线人数.rar

    在本案例中,“Ajax做的统计在线人数”是一个示例,它可能展示了如何使用Ajax技术实时更新网站的在线用户数量。 Ajax的核心是JavaScript对象XMLHttpRequest,它允许JavaScript向服务器发送请求并接收响应,这一切都...

    php网站统计人数的代码

    【PHP网站统计人数的代码详解】 在Web开发中,统计网站访问人数是一项基本的需求,它可以帮助网站管理员了解网站的活跃度和用户流量。PHP作为最流行的服务器端脚本语言之一,常常被用来实现这一功能。这里我们将...

    基于PHP的在线人数统计程序源码.zip

    【标题】: "基于PHP的在线人数统计程序源码" 这个标题揭示了我们要讨论的核心内容——一个使用PHP编程语言编写的在线人数统计程序的源代码。PHP是一种广泛应用于Web开发的服务器端脚本语言,特别适合创建动态网页和...

Global site tag (gtag.js) - Google Analytics