- <?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;
?>
效果图: