php中HTTP_REFERER函数用法实例


Posted in PHP onNovember 21, 2014

本文实例分析了php中HTTP_REFERER函数用法。分享给大家供大家参考。具体分析如下:

利用php的http_referer函数来判断用户的来路,这是比较简单的,实例代码如下:

<?php 

   if (isset($_SERVER['HTTP_REFERER'])) { 

     print "The page you were on previously was {$_SERVER['HTTP_REFERER']}<br />"; 

   } else { 

     print "You didn't click any links to get here<br />"; 

      } 

    ?> 

<a href="refer.php">Click me!</a>

下面是我们让用户不知道我们的来路处理,实例代码如下:
<?php 

$host = "3water.com"; 

$referer = "http://".$host; 

$fp = fsockopen ($host, 80, $errno, $errstr, 30); 

if (!$fp){ 

        echo "$errstr ($errno)<br>;n"; 

}else{ 

$request = " 

GET / HTTP/1.1 

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */"."* 

Referer: http://$host 

Accept-Language: zh-cn 

Accept-Encoding: gzip, deflate 

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 

Host: $host 

Connection: Close" 

."rnrn"; 

 

fputs ($fp, "$request"); 

while (!feof($fp)) 

{ 

   $res[] = fgets($fp,1024); 

} 

$html = join("",$res); 

fclose ($fp); 

$fp = file_put_contents("123cha.html",$html); 

echo "done";

}

这不就行了?

不过很奇怪的是,3water.com 的页面抓下来是乱码(除了http头),这是为什么?难道是因为用了gzip之类压缩?

<?php 

$host = "3water.com"; 

$html = file_get_contents("http://".$host); 

$fp = file_put_contents("hao123.html",$html); 

echo "done"; 

?>;

但这样抓的就没问题,再来分析开始抓的http头:

HTTP/1.1 200 OK Date: Wed, 31 Aug 2005 00:59:36 GMT Server: Apache/1.3.27 Cache-Control: max-age=1296000 Expires: Thu, 15 Sep 2005 00:59:36 GMT Last-Modified: Mon, 29 Aug 2005 13:56:00 GMT Accept-Ranges: bytes Connection: close Content-Type: text/html Content-Encoding: gzip Content-Length: 14567

果然有这句,Content-Encoding:gzip ,原来压缩了的,长度14567字节了,用第二种方法抓,原来没压缩的html是71143字节,原来file_get_contents还可以自动解压缩.

php实例二,代码如下:

<?php 

$host = '127.0.0.1'; 

$target = '/2.php'; 

$referer = 'https://3water.com'; //伪造HTTP_REFERER地址 

$fp = fsockopen($host, 80, $errno, $errstr, 30); 

if (!$fp){ 

echo "$errstr($errno)<br />n"; 

}  

else{ 

$out = " 

GET $target HTTP/1.1 

Host: $host 

Referer: $referer 

Connection: Closernrn"; 

fwrite($fp, $out); 

while (!feof($fp)){ 

echo fgets($fp, 1024); 

} 

fclose($fp); 

} 

?>

另一个2.php文件很简单,只是写上一行读取当前的HTTP_REFERER服务器值的代码即可,如下:
<?php 

echo "<hr />"; 

echo $_SERVER["HTTP_REFERER"]; 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
php数组合并的二种方法
Mar 21 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
php中call_user_func函数使用注意事项
Nov 21 #PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 #PHP
php常用数学函数汇总
Nov 21 #PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 #PHP
php防止恶意刷新与刷票的方法
Nov 21 #PHP
php采用curl实现伪造IP来源的方法
Nov 21 #PHP
php文件缓存类汇总
Nov 21 #PHP
You might like
PHP的加密方式及原理
2012/06/14 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
vue实现菜单切换功能
2019/05/08 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
Python运用于数据分析的简单教程
2015/03/27 Python
python追加元素到列表的方法
2015/07/28 Python
解决uWSGI的编码问题详解
2017/03/24 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
python 实现生成均匀分布的点
2019/12/05 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python实现代码审查自动回复消息
2021/02/01 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
体育教师求职信
2014/06/30 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
爱护公物主题班会
2015/08/17 职场文书
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android