php统计图片使用,反向链接等。
最近想做一个统计,谁用了我网站的图片、链接等数据。
图片统计大概可以这样。
/var/www/html/1.jpg
/var/www/html/tracker.php
/var/www/html/.htacess
RewriteEngine On
RewriteBase /
RewriteRule ^(.*).jpg$ tracker.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
header('Content-type:image/jpeg');
readfile($_GET['id'].'.jpg');
//file_put_contents('log.txt',$_GET['id'].' '.$_SERVER['REMOTE_ADDR'].' '.var_dump(apache_request_headers()));
?>
上面的代码可以统计图片被打开过几次,访问者的IP和浏览器等数据。但是如何统计反向链接呢? 比如:另一个网站使用了这张图片,那么怎样统计到底有多少网站使用了我的图片?(而不是单纯的浏览器打开)
另外,比如我制作一个小插件。允许用户嵌入该插件到他们的网站 那么script.php应该写一些怎样的代码,可以统计哪些网站使用了我的插件?
我只想知道代码怎么写?返回的数据与数据库的联系可以另外设计。谢谢。
------解决思路----------------------
怎样统计到底有多少网站使用了我的图片?(而不是单纯的浏览器打开)
只要統計http請求,不需要知道是否用瀏覽器打開。
你可以在tracker.php中加上$_SERVER['HTTP_REFERER'] 來獲取來源地址,即請求你這張圖的頁面的地址。
然後通過正則,獲取url的domain入庫。統計直接 group by photo 就可以了
表結構
id photo domain
------解决思路----------------------
你的代码只能统计动态的请求,对于静态的 url 就无能为力了,比如 http://www.mydomain,com/1.jpeg
正确的做法是分析 web 服务器的日志文件
------解决思路----------------------
楼上讲的对,如果你的图片全部都是用动态php去显示的,你的程序已经可以了。加上$_SERVER['HTTP_REFERER']获取来源。
而静态图片则可以通过获取apache log来分析。
------解决思路----------------------
1、静态文件由 web 服务器直接读取,而php动态读取则需要先启动 php 解析程序,再由 php 程序读取
板板脚趾头都会知道谁的效率高
2、日志文件是只增不减的,并且已存在的内容也不会被修改。所以你只需记住上一次读到哪里,这次接着读就可以了
------解决思路----------------------
靜態快很多,
php讀取會慢。
最好用靜態。
------解决思路----------------------
并不是所有的虚拟主机 日志存放路径 可以自行修改的。
所以你开发的这个项目,只能用于 云服务器的站长, 当然,大家对图片给谁动用了,并不觉得有什么,不是吗?
中国的网络是开放的,没多少人会去在乎注意这些东西,应该应该本着共享的精神。
如果有一天,发现图片给动用得非常多了。那么只需要一个伪静态代码,就可以把访问图片引用变成一个logo或者其它精心制作的广告图,
你有没有发现有很多图片有时候显示“该图片来自 XXX站,请进入***访问”,那些都是伪静态,一句话就搞定了。只要别人引用了网站图片,那图片就会变成伪静态设定好的另外一张图片。
------解决思路----------------------
只知道nginx服务器可以配置referer防盗链,并且自定义log,将referer写进去
apache也肯定有
需要php分析log的话...定时导入到sql,然后清空log如何?
------解决思路----------------------
如果通过日志文件去分析图片使用情况,我觉得不是很可靠,就想刚才群主说的,日志文件只增不减,分析的话,准确度不好把握。
------解决思路----------------------
可能与 Apache 的版本有关 http://apache.chinahtml.com/logs.html
关于读取日志文件,你好像没有理解我的意思
日志文件是不定长记录文件,在没有索引的情况下,是无法定位到指定行的
不过自己构建索引文件也是没有必要的,毕竟日志里都是“旧闻”,读过了也就没必要再读了
文件函数集中有:
ftell -- 返回文件指针读/写的位置
fseek -- 在文件指针中定位
你只需在每次 fgets 之后用 ftell 读取偏移位置,并保存
下次再读时,取回上次保存的偏移位置,用 fseek 定位
就可接着读了
一定会有人说 fgets 一次一行效率太低,但用 fread 一次一大块时,尾部的半截行,处理起来也并非易事
0
0
相关文章
php中nbsp是什么意思
如何从PHP中调用Python文件?
我们如何使用使用mysql_fetch_assoc()函数的PHP脚本来显示MySQL表中的所有记录?
ini_set()在PHP中的作用是什么?
在PHP中的readlink()函数
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。
1044
2026.02.13
本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。
334
2026.02.13
本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。
213
2026.02.13
本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。
35
2026.02.13
本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。
111
2026.02.13
本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。
17
2026.02.12
本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。
813
2026.02.12
本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。
97
2026.02.12
热门下载
相关下载
精品课程
最新文章


