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

转载 2013年12月11日 15:36:53

一.请求重定向

1用HTTP头信息

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

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

  1. <?php 
  2. $url = "www.baidu.com";  
  3. if (!empty($url))    
  4. {    
  5.     Header("HTTP/1.1 303 See Other"); //这条语句可以不写  
  6.     Header("Location: $url");  
  7. }    
  8. ?>    

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

2、用HTML标记PHP重定向 

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

  1. <?php 
  2. if (!empty($url))  
  3. {  
  4.     echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=$url\">";  
  5. }  
  6. ?> 

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

举例如下:

  1. <? 
  2. if (isset($url))  
  3. {  
  4.     echo "<SCRIPT LANGUAGE="JavaScript">";  
  5.     echo "location.href='$url'";  
  6.     echo "</SCRIPT>";  
  7. }  
  8. ?> 
或者

  1. <?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做服务器转发层,解决js的ajax跨域访问问题

做js的ajax应用时,会遇到你需要请求的接口并不在你当前域下,此时就会出现跨域访问的问题,浏览器会禁止你请求这个接口。 此时怎么访问这个WebService的接口呢? 一个简单的办法就是在本域的...

http反向代理和转发代理

点击查看全文 http://www.3qphp.com/2016/server_10/28.html 转载请注明:谷谷点程序 » h...

PHP 请求转发和重定向

1.PHP 重定向到另外的php文件 直接重定向:header( 'Location: '.$url_php ) ; 携带参数:...

curl抓取页面时遇到重定向的解决方法

用php的curl抓取网页遇到了问题,为阐述方便,将代码简化如下:
  • qmhball
  • qmhball
  • 2012年09月03日 13:29
  • 30230

php curl 请求302跳转页面

若请求url已改变且设置了自动跳转,可通过设置 CURLOPT_FOLLOWLOCATION 参数实现自动请求跳转链接。若要手动判断是否跳转,可通过 curl_getinfo($ch) 方法获取具...

PHP CURL 模拟POST请求 提交数据或上传文件

1.http://www.a.com/a.php 发送POST请求 function execUpload(){ $file = '/doucment/Readme.txt'; $ch =...
  • shrimpma
  • shrimpma
  • 2012年09月07日 17:27
  • 23798

php模拟post请求发送文件

由于项目需要,需要本地服务器接收数据后,再将数据转发到另外一台服务器上,故要用到模拟post请求发送数据,当然数据中也包含文件流。 curl是php比较常用的方式之一,一般代码如下: $param...

php curl请求转发

请求转发与请求重定向的区别

请求转发: 请求转发,即request.getRequestDispatcher().forward(),是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址...

php进行http重定向

什么是HTTP重定向? 当你访问www.yegle.net时,地址栏的地址会自动变成yegle.net。当你访问ye.gl的时候,地址栏的地址会变成yegle.net。这就是HTTP重定向 ...
  • klarclm
  • klarclm
  • 2012年08月29日 07:00
  • 8078
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP中实现请求转发(curl)和请求重定向
举报原因:
原因补充:

(最多只允许输入30个字)