Maison  >  Article  >  php教程  >  PHP中实现请求转发(curl)和请求重定向

PHP中实现请求转发(curl)和请求重定向

WBOY
WBOYoriginal
2016-06-06 19:41:563773parcourir

一.请求重定向 1 、 用HTTP头信息 也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型(Context-type: xxx/xxx),页面的属性(No cache, Expire)等等。 用HTTP头信息

一.请求重定向

1用HTTP头信息

也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache", "Expire")等等。

用HTTP头信息进行PHP重定向到另外一个页面的方法如下:

<ol>
<li><span><strong><span><span></span><span>php</span></span></strong><span> </span></span></li>
<li>
<span>$</span><span>url</span><span> = </span><span>"www.baidu.com"</span><span>;  </span>
</li>
<li><span>if (!empty($url))    </span></li>
<li><span>{    </span></li>
<li><span>    Header("HTTP/1.1 303 See Other"); //这条语句可以不写  </span></li>
<li><span>    Header("Location: $url");  </span></li>
<li><span>}    </span></li>
<li>
<span><strong><span>?></span></strong></span><span>    </span>
</li>
</ol>

注意一下,"Localtion:"后面有一个空格。

2、用HTML标记PHP重定向 

用HTML标记,就是用META的REFRESH标记,举例如下:

<ol>
<li><span><strong><span><span></span><span>php</span></span></strong><span> </span></span></li>
<li><span>if (!empty($url))  </span></li>
<li><span>{  </span></li>
<li>
<span>    echo "</span><strong><span><span><span>META</span></span></span></strong><span> </span><span>HTTP-EQUIV</span><span>=\"Refresh\" </span><span>CONTENT</span><span>=\"0;</span><span>URL</span><span>=$url\"</span><span><strong><span>></span></strong></span><span>";  </span>
</li>
<li><span>}  </span></li>
<li>
<span><strong><span>?></span></strong></span><span> </span>
</li>
</ol>

3、用脚本来实现PHP重定向

举例如下:

<ol>
<li><span><span><strong><span></span></strong></span><span> </span></span></li>
<li>
<span>if</span><span> (isset($url))  </span>
</li>
<li><span>{  </span></li>
<li>
<span>    echo "</span><strong><span><span><span>SCRIPT</span></span></span></strong><span> </span><span>LANGUAGE</span><span>=</span><span>"JavaScript"</span><span><strong><span>></span></strong></span><span>";  </span>
</li>
<li>
<span>    echo "</span><span>location.href</span><span>=</span><span>'$url'</span><span>";  </span>
</li>
<li>
<span>    echo "</span><strong><span><span></span><span>SCRIPT</span><span>></span></span></strong><span>";  </span>
</li>
<li><span>}  </span></li>
<li>
<span><strong><span>?></span></strong></span><span> </span>
</li>
</ol>
或者
<ol><li><span><strong><span><span></span><span>php</span></span></strong><span> echo "</span><strong><span><span><span>script</span><span>></span></span></span></strong><span><span>window.location</span></span><span> =\"$url\";</span><strong><span><span></span><span>script</span><span>></span></span></strong><span>";</span><span><strong><span>?></span></strong></span><span> </span></span></li></ol>

二.请求转发

PHP使用curl来进行请求转发

1.给PHP安装和开启curl

一、window下安装php_curl支持

  1.将PHP安装文件夹下的三个文件php_curl.dll(可能在ext文件夹中),libeay32.dll,ssleay32.dll 复制到 %windir%/system32下;
  2.打开php.ini(可能在PHP环境的安装目录下,默认在c:\WINDOWS目录下),将;extension=php_curl.dll头部的分号去掉;
  3.重启php的服务(apache或者IIS),如重启IIS,运行iisreset即可。

二、linux中php如何安装curl扩展

  如果php已经在系统编译好,后来又需要添加新的扩展,一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展。

情况一:全新安装php 和curl

  首先下载curl安装包(我的php是4.4.4的,下载最新的curl 7.16 不能使用,最后下载7.14的才可以,下载要注意一下版本)

然后安装cURL

# tar -zxf (此处填下载的curl包名称)
# ./configure –prefix=/usr/local/curl
# make; make install

安装php时,只要打开开关 –with-curl=/usr/local/curl就可以了。

  php要求curl的目录要有include和lib目录,并且include下要有easy.h和curl.h两个文件,lib下要有libcurl.a。经编译后include下的文件有了,但是lib目录下可能还没有。原来生成到lib/.libs目录下,所以要copy到lib目录。

情况二:已经安装了php,现在需要添加这个扩展

进入安装原php的源码目录,(如果删了,但是还有原来的压缩文件的话,重新解压就行)

cd ext/curl
phpize  ./configure –with-curl=DIR   (可以不写dir,如果你的curl安装时没有指定目录)
make

就会在PHPDIR/ext/curl/moudles/下生成curl.so的文件。
复制curl.so文件到extensions的配置目录,修改php.ini就好了

以上两种就是Linux下php扩展cURL的安装方法。

2.cURL实现Get和Post请求的方法      相关实现方法的文章链接:脚本之家

但仔细发现,用curl实现的请求转发和用JSP里的request.getrequestdispatcher请求转发不一样

例如:

a.php里实现了curl请求,实际上是a.php页面向其他页面请求,然后把响应内容输出在a.php页面里,调用完curl后,a.php还能再做别的事情

但JSP不同,jsp中实现请求转发后,例如:a.jsp请求转向到b.jsp,那么就会停止执行当前的a.jsp,转而执行被转发的资源b.jsp

相同的是a.php与a.jsp上的URL都不变化

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:几种php加速器比较Article suivant:php str