判断访问来源的疑问

php中文网
发布: 2016-06-23 14:10:42
原创
1264人浏览过

假设我的站点是 a.com 有图片a.com/123.png

b.com 使用该图片的时候 http_referer 是?

然后直接在地址栏输入a.com/123.png http_referer 是b.com

我想问的是怎么判断图片是其它站被引用还是用户直接访问?

问问小宇宙
问问小宇宙

问问小宇宙是小宇宙团队出品的播客AI检索工具

问问小宇宙 77
查看详情 问问小宇宙

回复讨论(解决方案)

Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())

在外链点进去的时候 HTTP_REFERER也带着这个网站的主机地址呢
加个IF语句来判断。然后tostring解析到地址,就可以用计数器判断了

直接浏览器输入 HTTP_REFERER 为空
从页面链接过来 HTTP_REFERER 为那个页面的url

但是需要注意的是,所有有 HTTP_ 前缀的变量都是访问方提供的,可靠性极低

你只能靠HTTP_REFERER来判断,虽然这个不是很靠谱可以伪造。

Request.ServerVariables["HTTP_REFERER"]
Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())

在外链点进去的时候 HTTP_REFERER也带着这个网站的主机地址呢
加个IF语句来判断。然后tostring解析到地址,就可以用计数器判断了

有没有PHP版本的大侠

$_SERVER['HTTP_REFERER']里面
至于里面参数好像有点多。打出来慢慢看。

楼主说的这个问题就是盗链啊。

 header("content-type:text/html; charset=utf-8");
 if(isset($_SERVER['HTTP_REFERER'][
])){
 
//判断$_SERVER['HTTP_REFERER'是不是以http://localhost/test/为开头的
//如果是,则说明是本网站,如果不是,则说明不是本网站,
if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/test/")==0){
echo '这是本站访问';

}else{
//跳转到警告页面
header('Location:warning.php');
}
 
 }else{
//跳转到警告页面
header('Location:warning.php');
 }

以上这段代码是我自己写的一段反盗链的代码。你的问题,一看这段代码就能够解决。在传智播客韩顺平php系列视频中的第84讲就讲到了这个反盗链的问题。可以更清楚的了解了。

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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