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

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

WBOY
WBOYOriginal
2016-06-06 19:41:563770browse

一.请求重定向 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都不变化

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:几种php加速器比较Next article:php str