php HTTP_REFERER函数的使用用法

 更新时间:2016年11月25日 16:48  点击:1360

利用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 = "www.123cha.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";
}[/code]

这不就行了?

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

[code]<?php
$host = "www.111cn.net";
$html = file_get_contents("http://".$host);
$fp = file_put_contents("hao123.html",$html);
echo "done";
?>;[/code]


但这样抓的就没问题.

再来分析开始抓的http头
[code]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[/code]

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


实例二

<?php
$host = '127.0.0.1';
$target = '/2.php';
$referer = 'http://www.111cn.net'; //伪造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教程 ereg()把htm转换成xml文件实现方法

语法: int ereg(string pattern, string string, array [regs]);

返回值: 整数/数组

 

<?php

$text = "<p>This is some text here "</p>".</p>";
ereg("<p>(([^<"]|[^<]*<[^/][^<])*("[^"]*"([^<"]|[^<]*<[^/][^<])*)*)?</p>", $text, $matches);
echo "Found text: " . $matches[1] . "n";
?>

 

内容说明


本函数以 pattern 的规则来解析比对字符串 string。比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。

var_export -- 输出或返回一个变量的字符串表示
描述
mixed var_export ( mixed expression [, bool return])


此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。

您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

比较 var_export() 和 var_dump().

 

<?php教程
  $languages = array( 'French', 'German', 'Russian', 'Chinese',
                      'Hindi', 'Quechua', 'Spanish', 'Hausa');
  printf("<pre>Original array:n%s</pre>n", var_export($languages, TRUE));

  $slice1 = array_slice($languages, 2, 4);
  printf("<pre>Slice 1:n%s</pre>n", var_export($slice1, TRUE));

  $slice2 = array_slice($languages, 2, 4, TRUE);
  printf("<pre>Slice 2:n%s</pre>n", var_export($slice2, TRUE));

  $slice3 = array_slice($languages, -6, -2, TRUE);
  printf("<pre>Slice 3:n%s</pre>n", var_export($slice3, TRUE));

  $last3 = array_slice($languages, -3);
  printf("<p>Last 3: %s</p>n", var_export($last3, TRUE));

  $last3 = array_slice($languages, -3, 3, TRUE);
  printf("<p>Last 3: %s</p>n", var_export($last3, TRUE));
?>

<?php教程 echo $_SERVER["HTTP_USER_AGENT"]; ?>
该脚本的输出可能是:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
PHP 有很多种不同类型的变量。在以上例子中我们打印了一个数组的元素。数组是一类非常有用的变量。
$_SERVER 只是 PHP 自动全局化的变量之一。您可以查阅“保留变量”一节来查看这些变量的列表,或者也可以建立如下的文件来得到一个完整的列表:

php 根据HTTP_USER_AGENT 判断用户浏览器类型

function browsers(){
   global $HTTP_USER_AGENT ;
   if (isset($HTTP_USER_AGENT)){
    $sAgent = $HTTP_USER_AGENT;
   }else{
    $sAgent = $_SERVER['HTTP_USER_AGENT'];
   }
   if (strpos($sAgent,'MSIE') !== false && strpos($sAgent,'mac') === false && strpos($sAgent,'Opera') === false){
    $iVersion = (float)substr($sAgent,strpos($sAgent,'MSIE') + 5,3);
    return ($iVersion >= 5.5) ;
   }else if (strpos($sAgent,'Gecko/') !== false){
    $iVersion = (int)substr($sAgent,strpos($sAgent,'Gecko/') + 6,8);
    return ($iVersion >= 20030210) ;
   }else{
    return false;
   }
  }


可以得到链接/提交当前页的父页面URL

<?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教程 自定字符串中的部分字符进行替换方法

substr_replace()函数对自定字符串中的部分字符进行替换
   语法:substr_replace(str,repl,start,[int length])
   语法说明:
   str——必选参数,指定要操作的原始字符串
   repl——指定替换后的新字符串
   start——指定替换字符串的开始位置
   length——可选参数,指定返回字符串的长度。
   使用substr_replace()函数替换字符串的应用实例:

实例代码:
<?php
$b=”手册”;
$c=”zero的php博客”;
echo substr_replace($c,$b,9,4);
?>
输出结果:
zero的php手册

参数 描述
string 必需。规定要检查的字符串。
replacement 必需。规定要插入的字符串。
start

必需。规定在字符串的何处开始替换。

  • 正数 - 在第 start 个偏移量开始替换
  • 负数 - 在从字符串结尾的第 start 个偏移量开始替换
  • 0 - 在字符串中的第一个字符处开始替换
charlist

可选。规定要替换多少个字符。

  • 正数 - 被替换的字符串长度
  • 负数 - 从字符串末端开始的被替换字符数
  • 0 - 插入而非替换

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24