PHP中实现请求转发(curl)和请求重定向
一.请求重定向 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重定向到另外一个页面的方法如下:
- php
- $url = "www.baidu.com";
- if (!empty($url))
- {
- Header("HTTP/1.1 303 See Other"); //这条语句可以不写
- Header("Location: $url");
- }
- ?>
注意一下,"Localtion:"后面有一个空格。
2、用HTML标记PHP重定向
用HTML标记,就是用META的REFRESH标记,举例如下:
- php
- if (!empty($url))
- {
- echo "META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=$url\">";
- }
- ?>
3、用脚本来实现PHP重定向
举例如下:
或者
- if (isset($url))
- {
- echo "SCRIPT LANGUAGE="JavaScript">";
- echo "location.href='$url'";
- echo "SCRIPT>";
- }
- ?>
- php echo "script>window.location =\"$url\";script>";?>
二.请求转发
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都不变化
下一篇: php实现rsa算法,该如何解决