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基础学习之流程控制的实现分析
Apr 28 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
浅谈php的优缺点
Jul 14 PHP
php生成带logo二维码方法小结
Apr 08 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
PHP精确计算功能示例
Nov 29 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
php7性能提升的原因详解
Oct 13 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
大师制作的中短波矿石收音机
2020/04/02 无线电
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
python字符串,数值计算
2016/10/05 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
python实现石头剪刀布小游戏
2021/01/20 Python
pow在python中的含义及用法
2019/07/11 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
百丽国际旗下购物网站:优购
2017/02/28 全球购物
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
上级检查欢迎词
2014/01/18 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
骨干教师考核方案
2014/05/09 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
学习保证书100字
2015/02/26 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
使用JS实现简易计算器
2021/06/14 Javascript
MYSQL如何查看进程和kill进程
2022/03/13 MySQL
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android
利用Apache Common将java对象池化的问题
2022/06/16 Servers