0

0

PHP怎么实现视频分享统计_PHP实现视频分享统计方式【统计】

蓮花仙者

蓮花仙者

发布时间:2026-01-19 16:22:02

|

216人浏览过

|

来源于php中文网

原创

必须为每次分享动态生成唯一share_id并绑定用户、视频和时间,通过后端PHP生成带参链接、接收点击并记录日志,严格区分分享动作与点击动作,结合IP+UA前缀+时间窗口三重校验防刷。

php怎么实现视频分享统计_php实现视频分享统计方式【统计】

视频分享链接生成时必须带唯一追踪参数

不加参数的分享链接无法区分来源,所有点击都会归到同一入口。关键是在生成分享 URL 时,为每次分享动态附加 share_idref 参数,且该值需与用户、视频、时间强绑定。

  • share_id 建议用 hash_hmac('sha256', $video_id . $user_id . time(), $secret_key) 生成,防伪造
  • 避免用纯递增 ID 或可预测的 rand(),否则易被刷量
  • 前端跳转前不建议用 JS 拼接参数——可能被禁用或拦截;应在后端 PHP 直接输出带参链接

用 PHP 接收并记录分享点击(不依赖 JS)

用户点击分享链接后,请求应先落到 PHP 路由(如 /share/click.php),由服务端完成日志写入,确保即使 JS 失效、广告拦截开启也能统计。

$_GET['ref'] = $_GET['ref'] ?? '';
if (preg_match('/^[a-f0-9]{64}$/', $_GET['ref'])) {
    $pdo->prepare("INSERT INTO share_logs (share_id, ip, ua, created_at) VALUES (?, ?, ?, NOW())")
        ->execute([$_GET['ref'], $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']]);
    // 302 跳转到真实视频页
    header('Location: /video/' . $video_id);
    exit;
}

注意:不要在该脚本中执行耗时操作(如发邮件、调外部 API),否则拖慢跳转体验;日志入库建议用异步队列或批量插入优化。

区分「分享动作」和「点击动作」,别混在一起记

很多人把用户点「分享按钮」和别人点「分享链接」都记成“一次分享”,导致数据虚高。PHP 后端要明确分离两个行为:

eSiteGroup站群管理系统1.0.4
eSiteGroup站群管理系统1.0.4

eSiteGroup站群管理系统是基于eFramework低代码开发平台构建,是一款高度灵活、可扩展的智能化站群管理解决方案,全面支持SQL Server、SQLite、MySQL、Oracle等主流数据库,适配企业级高并发、轻量级本地化、云端分布式等多种部署场景。通过可视化建模与模块化设计,系统可实现多站点的快速搭建、跨平台协同管理及数据智能分析,满足政府、企业、教育机构等组织对多站点统一管控的

下载

立即学习PHP免费学习笔记(深入)”;

  • 「分享动作」:用户点击分享按钮时,调用 /api/share?video_id=123,生成 share_id 并存入 shares 表,返回带参 URL
  • 「点击动作」:他人访问 /share/click.php?ref=abc... 时,只往 share_logs 表写一条记录,不修改原分享记录
  • 统计「分享次数」看 shares 表行数;统计「分享点击量」查 share_logs 表中对应 share_id 的数量

防刷要点:IP + User-Agent + 时间窗口三重校验

单纯靠 IP 限频不准(内网共用 IP),只校验 UA 又太弱(可伪造)。PHP 实现时建议组合判断:

  • 同一 share_id 在 10 分钟内,相同 IP + UA 前缀(如 Chrome/120) 最多记 1 次
  • 用 Redis 缓存键:"share:click:{$share_id}:{$ip}:{$ua_prefix}",TTL 设为 600
  • 若缓存已存在,跳过插入,直接跳转;否则写库 + 写缓存

漏掉 UA 前缀只取完整 UA,会导致移动端不同版本 Chrome 被当成不同来源,误杀真实用户。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2678

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1659

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1515

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1419

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1235

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1488

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

11

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号