龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

统计在线人数

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
统计在线人数
统计在线人数
<?php
function getip() {
	if (getenv ( "http_client_ip" ) && strcasecmp ( getenv ( "http_client_ip" ), "unknown" ))
		$ip = getenv ( "http_client_ip" );
	else if (getenv ( "http_x_forwarded_for" ) && strcasecmp ( getenv ( "http_x_forwared_for" ), "unknown" ))
		$ip = getenv ( "http_x_forwarded_for" );
	else if (getenv ( "remote_addr" ) && strcasecmp ( getenv ( "remote_addr" ), "unknown" ))
		$ip = getenv ( "remote_addr" );
	else if (isset ( $_SERVER ["REMOTE_ADDR"] ) && $_SERVER ["REMOTE_ADDR"] && strcasecmp ( $_SERVER ["REMOTE_ADDR"], "unknown" ))
		$ip = $_SERVER ["REMOTE_ADDR"];
	else
		$ip = "unknown";
	return ($ip);
}

$user_online = 'count.txt';
touch ( $user_online );
$timeout = 30;
$user_arr = file_get_contents ( $user_online );
$user_arr = explode ( '#', rtrim ( $user_arr, '#' ) );
$temp = array ();
foreach ( $user_arr as $value ) {
	$user = explode ( ",", trim ( $value ) );
	if (($user [0] != getip ()) && ($user [1] > time ())) {
		array_push ( $temp, $user [0] . "," . $user [1] );
	}
}
array_push ( $temp, getip () . "," . (time () + ($timeout)) . '#' );
$user_arr = implode ( "#", $temp );
$fp = fopen ( $user_online, "w" );
flock ( $fp, LOCK_EX );
fputs ( $fp, $user_arr );
flock ( $fp, LOCK_UN );
fclose ( $fp );
echo "当前有" . count ( $temp ) . "人在线";
?>
精彩图集

赞助商链接