PHP获取统计并获取网站在线人数
这里我使用的方法是通过记录5分钟内,访问网站的用户的IP地址,来判断当前在线人数。
首先我们需要两个函数,一个是获取客户端IP的函数
/**
* 获取客户端IP
* @return string
*/
function getip() { //获取客户端IP
if ( isset($_SERVER[ "HTTP_CDN_SRC_IP" ]) ) { //获取网宿CDN真实客户IP
return replace_ip( $_SERVER[ "HTTP_CDN_SRC_IP" ] );
}
if ( isset($_SERVER[ "HTTP_X_FORWARDED_FOR" ]) ) { //获取网宿、阿里云真实客户IP,参考:https://help.aliyun.com/knowledge_detail/40535.html
return replace_ip( $_SERVER[ "HTTP_X_FORWARDED_FOR" ] );
}
if ( isset($_SERVER[ "HTTP_CLIENT_IP" ]) ) {
return $_SERVER[ "HTTP_CLIENT_IP" ];
}
if ( isset($_SERVER[ "HTTP_X_FORWARDED" ]) ) {
return $_SERVER[ "HTTP_X_FORWARDED" ];
}
if ( isset($_SERVER[ "HTTP_FORWARDED_FOR" ]) ) {
return $_SERVER[ "HTTP_FORWARDED_FOR" ];
}
if ( isset($_SERVER[ "HTTP_FORWARDED" ]) ) {
return $_SERVER[ "HTTP_FORWARDED" ];
}
$httpip = $_SERVER[ 'REMOTE_ADDR' ];
if ( !preg_match( "/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/", $httpip ) ) {
$httpip = "127.0.0.1";
}
return $httpip;
}
还有一个是拆分代理IP函数
/**
* 拆分代理IP
* @return string
*/
function replace_ip($ip)
{
if (!$ip) {
return "";
}
$httpip_array = explode(",", $ip);
if ($httpip_array[0]) {
return $httpip_array[0];
} else {
return $ip;
}
}
接着便是主要代码:
/**
*
* 用户在线数量统计
*
* */
// 获取用户 IP 地址
$userIP = getip();
// 获取当前时间戳
$currentTime = $date;
// 设置在线时间间隔(5分钟)
$timeout = $currentTime - (5 * 60);
// 创建或打开文件以保存在线用户数据
$file = fopen("online_users.txt", "c+");
// 获取文件中的数据
$users = unserialize(fread($file, filesize("online_users.txt")));
// 如果用户数据不是数组,则初始化为空数组
if (!is_array($users)) {
$users = [];
}
// 更新当前用户的在线时间
$users[$userIP] = $currentTime;
// 删除超时的用户
foreach ($users as $ip => $lastTime) {
if ($lastTime < $timeout) {
unset($users[$ip]);
}
}
// 重置文件指针,并清空文件内容
ftruncate($file, 0);
rewind($file);
// 将更新后的用户数据写入文件
fwrite($file, serialize($users));
// 关闭文件
fclose($file);
//在线人数
$online_users = count($users);
最后这个变量 $online_users
就是在线人数了,放到想要输出的位置,进行输出即可。
在线人数 <?php echo $online_users;?> 人
我其实一直非常感谢你,一开始我8岁时对网站很感兴趣,那时还是0几年,我自己学html,没什么目标,直到你的出现,我现在也成功的搭建了网盘服务,论坛,还有blog,另外你的果实服务器也陪伴我很久,因为果实关闭,我也退mc了,给我们留下很多美好回忆。我现在13了,有自己的论坛,网盘,下载站,博客,但还是忘不了
-来自你网站可能是最年轻的仰慕者 飞影
非常感谢你的信任和支持!在您年幼的时候就展现出对编程和网站建设浓厚的兴趣,着实令人欣慰!
你成功搭建了论坛、网盘、下载站和博客,展示了卓越的技术才华。
果实服务器的关闭或许让人感到惋惜,却也在心中留下了许多美好的回忆。
愿您持续燃烧对技术的热情,未来的道路上充满着无限的可能性。再一次感谢您的信任和支持!
你13岁那你2010出生,你0几年8岁。
2010-8=2002
设你2002出生那你2010的时候10岁
然后你冻龄到了2020年意外接触iPhone 4S玩了我的世界移动版然后解冻了?
我现在13你好好算算,还有我是在果实服出现才入了mc
你说你今年十三岁,那么如果你是十三周岁,就是2010年出生,如果你是十三虚岁,就是2011年出生,不管怎么说,零几年的时候,你还没来到这个世界!!!!你说你八岁学HTML,那么应该是2018或者2019年这个样子,这个时候是零几年吗?你数学怎么学的,数学都学不好玩什么网络???
我现在13你好好算算,还有我是在果实服出现才入了mc,还有你家年倒着过啊,越过也年轻挺好的2010年+8等于2018,mc刚兴起的时候
13岁, 零几年就学html, 今年2023年, 果实服是2021
你还飞影Flycamera,怎么?飞天镜头?你这个语文数学和英语都是学前班水平,说话自相矛盾。
其实我和你一样 8岁接触编程 10岁接触python 12接触html 初一写写博客 租来的廉价服务器 套个模板 复制点代码就是自己的博客了 同是10年
一群10年小孩不吹能击败似是不是,你对编程有啥理解吗?编程你编程的什么语言?Python也算一种语言,你前面学的“编程”能报上名字来?你这简直就是反着学,从难学到简,神童能不能414。
如果你要这么说 那我也没办法了 这只不过是我的爱好罢了
是不是无奈了,是不是无奈了啊?
我懂你意思了 一开始 所谓说的编程是指图形化 以至于后来的python 属实大意
8岁接触编程 10岁接触python 12接触html
真假,现在编程普及到幼儿园了吗??
哈哈 8岁那时候学的是scratch 图形化,10岁也才开始学python
python不是初二的知识吗?你10岁怎么触碰到的
线上学 学校教的那些没什么用
*学的也是皮毛罢了 一开始的海龟import turtle到现在的class类与对象
初一下学期就不学了 开始研究html了 现在html玩玩罢 没有想用心去学*
《l'u'n'无'语'》
干叼
你谁啊你?