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