首页
时间轴
统计
壁纸
留言
友邻
关于
推荐
每日新闻
网易云音乐
抖音无水印
小米步数
网站seo优化
网站监测器
文章伪原创
前端配色表
多编码转换
JSON解析
IP属地查询
IP端口扫描
在线测速网
在线集五福
精美壁纸
采集图片
蜜语星球
CF图标点亮
查QQ群数量
QQ邮箱
取QQSkey
取百度key
取微博key
Search
1
教你如何把Waves效果器完整的卸载干净
2,443 阅读
2
123云盘直链带密码解析源码
1,036 阅读
3
2023新版QQ工具箱全开源
787 阅读
4
2023新版API接口管理系统v1.3全开源
757 阅读
5
个人新拟态主页UI5.0全开源
574 阅读
技术文章
程序代码
实用软件
声卡效果
登录
/
注册
Search
标签搜索
咔咔云
PHP
技术文章
PHP代码
API
QQ技术
网站程序
绿色软件
易语言源码
网络攻防
图床源码
授权程序
网站优化
声卡效果
SEO优化
计算机常识
Windows
GitHub
typecho
网站美化
咔咔云
技术交流群
累计撰写
53
篇文章
累计收到
1
条评论
首页
栏目
技术文章
程序代码
实用软件
声卡效果
页面
时间轴
统计
壁纸
留言
友邻
关于
推荐
每日新闻
网易云音乐
抖音无水印
小米步数
网站seo优化
网站监测器
文章伪原创
前端配色表
多编码转换
JSON解析
IP属地查询
IP端口扫描
在线测速网
在线集五福
精美壁纸
采集图片
蜜语星球
CF图标点亮
查QQ群数量
QQ邮箱
取QQSkey
取百度key
取微博key
用户登录
登录
注册
搜索到
40
篇与
的结果
2024-05-04
通过php实现在线人数精准统计的方法
在Web开发中,统计在线人数是一个常见的需求。通过PHP,我们可以使用两种主要的方法来实现这一功能:基于Session的统计和基于数据库的记录。 方法一:基于Session的统计PHP的Session机制可以用来跟踪和识别用户。当用户访问网站时,我们可以为其创建一个Session,并将其存储在服务器上。通过统计当前活动的Session数量,我们可以估算出在线人数。// 在用户访问页面时开始或恢复Session session_start(); // 设置一个名为'last_activity'的Session变量,记录用户最后活动时间 $_SESSION['last_activity'] = time(); // 定义一个函数来统计在线人数 function count_online_users() { $sessions_path = ini_get('session.save_path'); // 获取Session保存路径 $files = scandir($sessions_path); // 列出该路径下所有文件 $count = 0; $now = time(); foreach ($files as $file) { if (preg_match('/(sess_\w+)/', $file)) { // 匹配Session文件名格式 $session_data = file_get_contents("$sessions_path/$file"); $session_data = unserialize($session_data); // 反序列化Session数据 if (isset($session_data['last_activity']) && ($now - $session_data['last_activity']) < 300) { // 如果最后活动时间小于5分钟,则认为用户仍在线 $count++; } } } return $count; // 返回在线人数 } // 使用函数统计并显示在线人数 echo "当前在线人数: " . count_online_users();这种方法简单易行,但有一些局限性。例如,它依赖于文件系统的扫描,可能在高并发环境下效率不高。此外,它不能准确区分不同页面的用户活动情况。方法二:基于数据库的记录为了更精确地统计在线人数,并能够跟踪用户在不同页面的活动,我们可以使用数据库来记录用户活动。当用户访问页面时,我们在数据库中插入或更新一条记录,包括用户ID、访问页面和访问时间等信息。然后,我们可以通过查询数据库来计算在线人数。// 假设已经建立了数据库连接 // 在用户访问页面时更新数据库记录 function update_user_activity($user_id, $page) { global $pdo; // 假设$pdo是已经建立的PDO数据库连接对象 $now = time(); $stmt = $pdo->prepare("INSERT INTO user_activity (user_id, page, activity_time) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE page=?, activity_time=?"); $stmt->execute([$user_id, $page, $now, $page, $now]); } // 定义一个函数来统计在线人数 function count_online_users() { global $pdo; // 假设$pdo是已经建立的PDO数据库连接对象 $now = time(); $stmt = $pdo->prepare("SELECT COUNT(*) FROM user_activity WHERE activity_time > ?"); $stmt->execute([$now - 300]); // 假设5分钟内活跃的用户为在线用户 return (int)$stmt->fetchColumn(); // 返回在线人数 } // 示例用法:在用户访问页面时调用update_user_activity函数记录活动,然后统计并显示在线人数 $user_id = 123; // 假设的用户ID,实际应用中应从用户认证系统中获取 $page = 'example.php'; // 假设的当前页面,实际应用中应使用$_SERVER['REQUEST_URI']等获取 update_user_activity($user_id, $page); echo "当前在线人数: " . count_online_users();这种方法提供了更精确和灵活的用户活动跟踪,但增加了数据库的写操作负担。在实际应用中,可以根据需求选择合适的方法。
2024年05月04日
80 阅读
0 评论
0 点赞
2023-02-19
随机秀图瀑布流本地版源码
本源码由咔咔云站长根据卖家秀程序二改,采用本地数据存储调用,图片数据将会以本地自动获取,非第三方接口,不用再担心接口失效问题!使用方法1.PHP环境5.6或以上,直接解压到服务器或虚拟空间即可使用,支持上传二级目录访问!2.本程序已内置大量图片地址数据(正规绿色图片无违规!或自行添加其他图链)如果需要添加图片地址数据等,仅需要打开文件夹(datatu)的txt文件增加或修改源码截图源码下载{cloud title="随机秀图瀑布流加载源码_本地数据版" type="lz" url="https://wwwm.lanzoub.com/iAnkw0o1zlda" password=""/}
2023年02月19日
271 阅读
0 评论
0 点赞
2023-02-19
个人新拟态主页UI5.0全开源
本套程序由咔咔云站长独家优化,2023年最新可用个人拟态化UI引导页,全解开源,无任何加密,二开请保留作者版权!开发环境UI:Photoshop 前端:HTML5、CSS3、JavaScript,后台用的光年框架,前台主要用的Maria M. Muñoz的拟态组件,还有部分插件都在下面 后端:PHP,thinkphp6安装教程Nginx 1.20.2 + MySQL 5.6.50 + PHP-7.2.331:PHP版本>7.1即可2:设置public文件夹为运行目录3:设置ThinkPhp伪静态location ~* (runtime|application)/{ return 403; } location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } }4:开启exec函数 (默认是禁用的) ,用来获取CPU和内存状态【稳定云用户可忽略】 5:在路径\config\database.php的文件 填写数据库名、数据库用户名、数据库密码 6:导入数据库文件kkjsz.sql{message type="success" content="后台路径:http://域名/admin/login 账号:admin密码:123456"/}关于插件如果哪天某个插件失效了,可以尝试把插件库存放到自己的云储存/服务器里面(不建议存放本地)jQuery中文官网:https://www.jquery123.com axios中文官网:http://www.axios-js.com dayjs中文官网:https://dayjs.fenxianglu.cn 中文官网:https://dayjs.fenxianglu.cn sweetalert官网:https://sweetalert.js.org dark-mode GitHub:https://github.com/jakejarvis/dark-mode (这个插件需要部署nodejs) 天气API用的是:https://api.vvhan.com/api/weather Maria M. Muñoz的拟态组件:https://codepen.io/myacode/pen/PoqQQNM{message type="success" content="本源码仅提供于大家学习使用已采用GPL2.0开源协议严禁商用!"/}程序演示图 程序下载{cloud title="个人新拟态主页UI5.0源码" type="lz" url="https://wwwm.lanzoub.com/io4RK0o0ee3g" password=""/}
2023年02月19日
574 阅读
0 评论
0 点赞
2023-02-12
PHP简单防CC攻击方法
开发原因由于咔咔云Api站点经常被频繁恶意请求,且偶尔还会被CC攻击的问题,所以咔咔云站长开发了一套防止非正常高频率请求和防止一般CC攻击的PHP版本代码。优势:{card-describe title="主要功能"}PHP访问频率限制,防CC攻击,支持上万并发。简单易用,无论你懂不懂PHP开发,只要会复制粘贴就行。Memcached内存缓存技术,高性能,高并发。精准无误,0误封。能防护QPS10000以内的CC攻击,看机器配置,有可能更高。支持范围较广,直接你网站支持PHP就行。源码简单,可自行修改,可以套自己喜欢的前端模板主题。{/card-describe}环境要求:PHP版本 ≥ 7.2PHP需安装Memcached扩展Memcached ≥1.6使用方法将以下开源代码添加到你网站核心文件中,相当于你网站任何页面都会引用的一个文件。如:config.php,common.php,Ajax.php等。开发源码ini_set("display_errors", "Off"); error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING); extension_loaded('memcached') or die('memcached扩展未安装!'); $logPath = $_SERVER['DOCUMENT_ROOT'] . '/waf/waf.log'; //日志记录文件保存路径,$_SERVER['DOCUMENT_ROOT']是网站根目录 $fileht = $_SERVER['DOCUMENT_ROOT'] . '/waf/ban.log'; //被拉黑IP记录文件保存路径 if (!file_exists($logPath)) { @mkdir($_SERVER['DOCUMENT_ROOT'] . '/waf/', 0777, true); @file_put_contents($logPath, ''); @file_put_contents($fileht, ''); } $allowtime = 2; //防刷新时间(秒) $allownum = 5; //防刷新次数(比如2秒5次,超过就警告) $allowRefresh = 10; //在此警告次数之后拉黑IP $bantime = 600; //封禁时间,超时自动解封(秒) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; $uri = $_SERVER['PHP_SELF']; $cache = new Memcached(); $cache->addServer('127.0.0.1', '11211') or die('memcached连接失败!'); $inban = $cache->get('waf-ban-' . $ip); if ($inban) { header("HTTP/1.1 403 Forbidden"); exit('<h1>403 Forbidden 非法访问</h1> <p>你的请求似乎不符合常理,已被服务器防火墙拦截,如有疑问请联系管理员QQ79087446/br>如果你在开发测试过程中超频被封IP,请等待' . ($bantime / 60) . '分钟后自动解封</br>你的IP:' . $ip . '</p>'); } $wafarr = $cache->get('waf-' . $ip); if (!$wafarr) { $wafarr = [ 'path' => $uri, 'time' => time() + $allowtime, 'sum' => 1, ]; $cache->set('waf-' . $ip, $wafarr, time() + $allowtime); } else { if ($wafarr['sum'] > $allownum) { $wafsum_arr = $cache->get('waf-sum-' . $ip); if (!$wafsum_arr) { $wafsum_arr = [ 'sum' => 1, ]; $cache->set('waf-sum-' . $ip, $wafsum_arr, time() + $bantime); } else { if ($wafsum_arr['sum'] > $allowRefresh) { $cache->set('waf-ban-' . $ip, 1, time() + $bantime); file_put_contents($fileht, $ip . "\n", FILE_APPEND); } else { $wafsum_arr['sum']++; $cache->set('waf-sum-' . $ip, $wafsum_arr, time() + $bantime); } } file_put_contents($logPath, $ip . '--' . date('Y-m-d H:i:s', time()) . '--' . $uri . "\n", FILE_APPEND); header("HTTP/1.1 403 Forbidden"); exit("请求频率QPS超过限制,请酌情访问,多次提醒后会封禁IP!"); } else { $wafarr['sum']++; $cache->set('waf-' . $ip, $wafarr, $wafarr['time']); } }
2023年02月12日
285 阅读
0 评论
0 点赞
2023-02-11
PHP统计网站在线人数代码
本套代码由咔咔云站长独家开发,代码主要特性高性能,高并发,0文件,0数据库。使用方法可稍微修改为输出js,在网站底部调用显示在线人数!此文件在网站核心文件中引用即可。比如config.php,common.php,Ajax.php等.调用格式网址后面添加参数 ?type=number 输出json格式的总人数。 网址后面添加参数 ?type=json 输出json格式的在线IP列表和有效时长。源码如下<?php /** * 网站在线人数统计,0文件,0数据库,支持高并发,高效率。 * 作者:咔咔云QQ79087446,QQ群237682461 * 网址:www.kkjsz.cn 咔咔云Api:api.kkjsz.cn * 转载请注明来源,谢谢。 */ ini_set("display_errors", "Off"); error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING); extension_loaded('memcached') or die('memcached扩展未安装!'); header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:GET,POST'); header('Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept'); $onlinetime = 600; //在线有效时间(秒) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; $mem = new Memcached(); $mem->addServer('127.0.0.1', '11211') or die('memcached连接失败!'); $line_user_list = $mem->get('on_line_user_list'); $line_user_list[$ip] = time(); foreach ($line_user_list as $lineuserip => $linetime) { $outusertime[$lineuserip] = time()-$linetime; if (time()-$linetime >= $onlinetime) { unset($line_user_list[$lineuserip]); } else { $body .= $lineuserip.' => 剩余失效时间: '.($onlinetime-(time()-$linetime)).' 秒</br>'; } } $mem->set('on_line_user_list', $line_user_list, 0); if ($_GET['type'] == 'number') { echo json_encode(['value' => count($line_user_list)]); exit; } if ($_GET['type'] == 'json') { echo json_encode(['line_user_list' => $line_user_list, 'line_out_time' => $outusertime]); exit; } ?> <h1>当前在线人数:<?php echo count($line_user_list); ?> 人</h1>访客刷新页面后重新计时! <h2>在线列表:</h2> <?php echo $body; ?>
2023年02月11日
187 阅读
0 评论
0 点赞
2023-01-29
API、SDK的区别
一、API的概念 API的全称为Application Programming Interface,翻译过来的意思就是应用程序编程接口。实际上,API是一些预先定义的函数,目的是提供应用程序与开发人员基于某个软件或硬件,得以访问一组进程的能力。不需要直接去访问源码,或去深刻理解内部工作机制的细节。也就是平常总说的封装的函数,避免重复造轮子的意思,实际上我们可以通过一个日常生活工作中的事来更好的理解API的概念:{callout color="#f0ad4e"}在没有网络的工作或生活条件下,我们如果需要通过电脑来获取手机中存储的信息时,可以使用一条数据线来连接手机和电脑。在这个场景下,电脑和手机上承载数据线的接口就相当于我们在编程中常说的“API接口”。{/callout}二、SDK的概念SDK的全称为Software Development Kit,翻译过来的意思就是软件开发工具包。这是一个覆盖面相当广泛的名词,简单来说就是:辅助开发某一类软件的相关文档、演示举例和一些工具的集合,这些都可以称为 SDK。{callout color="#f0ad4e"}SDK被开发出来的意义是为了减少开发者的工作量。例如:某公司开发出某种软件的某一功能,将其封装成SDK(例如数据分析SDK,就是能够实现数据分析功能的SDK),出售给其他需要的公司使用。这样就可以大大减少开发应用程序的工作量。{/callout}三、SDK和API的区别从根本上来讲,这两者的没有什么值得比较的地方,本质上是具有很强关联性的两个存在。我们可以将SDK解释为封装好功能的一个软件包,而这个软件包几乎是封闭的状态,只有一个接口可以进行访问,那这个接口就是我们所了解的API。再或者咔咔云站长给大家用生活中的例子来区别下二者:{callout color="#f0ad4e"}有一杯密封饮料,它的名字叫做“SDK”,饮料上插着吸管,吸管的名字叫“API”。把你叫做“XX系统”,如果你想喝到SDK里的饮料(让系统拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的系统和SDK工具包),否则你就喝不到饮料。所以:SDK=放着你想要的软件功能的软件包API=SDK上唯一的接口{/callout}
2023年01月29日
258 阅读
0 评论
0 点赞
1
2
...
7
首页
复制
搜索
前进
后退
重载网页
SEO优化
关于站长