PHP header() 函数使用方法总结

header分为三部分:

第一部分为HTTP协议的版本(HTTP-Version);
第二部分为状态代码(Status);
第三部分为原因短语(Reason-Phrase)。

header()函数使用说明:  

一、作用:  
~~~~~~~~~  
       PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照http://www.w3.org/Protocols/rfc2616/rfc2616。  
       传统的标头一定包含下面三种标头之一,并只能出现一次。  
       Location:  xxxx:yyyy/zzzz  
       Content-Type:  xxxx/yyyy  
       Status:  nnn  xxxxxx  

二、先来了解一下HTTP协议的运作方式  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
       HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。  
       它分四个过程,在HTTP协议中,服务端是指提供HTTP服务的部分,客户端是指你使用的浏览器或者下载工具等等。在通讯时,由客户端发出请求连接,服务端建立连接;然后,客户端发出HTTP请求(Request),服务端返回响应信息(Respond),由此完成一个HTTP操作。  

三、HTTP协议状态码表示的意思  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  1××  保留  
  2××  表示请求成功地接收  
  3××  为完成请求客户需进一步细化请求  
  4××  客户错误  
  5××  服务器错误  

 代码如下 复制代码

// fix 404 pages: 用这个header指令来解决URL重写产生的404 header
header(‘HTTP/1.1 200 OK’);

// set 404 header: 页面没找到
header(‘HTTP/1.1 404 Not Found’);

// 页面被永久删除,可以告诉seo/seo.html" target="_blank">搜索引擎更新它们的urls
// set Moved Permanently header (good for redrictions)
// use with location header
header(‘HTTP/1.1 301 Moved Permanently’);
// 访问受限
header(‘HTTP/1.1 403 Forbidden’);
// 服务器错误
header(‘HTTP/1.1 500 Internal Server Error’);

// 重定向到一个新的位置
// redirect to a new location:
header(‘Location: http://www.m-bang.com);

延迟一段时间后重定向
// redrict with delay:
header(‘Refresh: 10; url=http://www.sina.com.cn’);
print ‘You will be redirected in 10 seconds’;

// 覆盖 X-Powered-By value
// override X-Powered-By: PHP:
header(‘X-Powered-By: PHP/4.4.0′);
header(‘X-Powered-By: Brain/0.6b’);

// 内容语言 (en = English)
// content language (en = English)
header(‘Content-language: en’);

//最后修改时间 (在缓存的时候可以用到)
// last modified (good for caching)
$time = time() – 60; // or filemtime($fn), etc
header(‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’, $time).’ GMT’);

// 告诉浏览器要获取的内容还没有更新
// header for telling the browser that the content
// did not get changed
header(‘HTTP/1.1 304 Not Modified’);

// 设置内容的长度 (缓存的时候可以用到):
// set content length (good for caching):
header(‘Content-Length: 1234′);

// 用来下载文件:
// Headers for an download:
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=”example.zip”‘);
header(‘Content-Transfer-Encoding: binary’);

// 禁止缓存当前文档:
// load the file to send:readfile(‘example.zip’);
// Disable caching of the current document:
header(‘Cache-Control: no-cache, no-store, max-age=0, must-revalidate’);
header(‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’);
// 设置内容类型:
// Date in the pastheader(‘Pragma: no-cache’);
// set content type:
header(‘Content-Type: text/html; charset=iso-8859-1′);
header(‘Content-Type: text/html; charset=utf-8′);
header(‘Content-Type: text/plain’);

// plain text file
header(‘Content-Type: image/jpeg’);

// JPG picture
header(‘Content-Type: application/zip’);

// ZIP file
header(‘Content-Type: application/pdf’);

// PDF file
header(‘Content-Type: audio/mpeg’);

// Audio MPEG (MP3,…) file
header(‘Content-Type: application/x-shockwave-flash’);

// 显示登录对话框,可以用来进行HTTP认证
// Flash animation// show sign in box
header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: Basic realm=”Top Secret”‘);
print ‘Text that will be displayed if the user hits cancel or ‘;
print ‘enters wrong login da
ta’;
?>

现在表单的填写,我们可以用AJAX对用户随时进行验证,进行友好的提示,但是在用户没有留意AJAX友好提示,提交了错误的表单,跳回原页,而填写的信息却全部丢失了。要支持页面回跳,有以下的办法:
1. 使用session_cache_limiter方法: session_cache_limiter(‘private,must-revalidate’);但是要值得注意的是 session_cache_limiter()方法要写在session_start()方法之前才有用;
2.用header来设置控制缓存的方法: header(‘Cache-control:private,must-revalidate’);

页面跳转要注意的几个问题总结

1、location和“:”号间不能有空格,否则会出错。
2、在用header前不能有任何的输出。
3、header后的PHP代码还会被执行。
下面是和asp中重定向response.redirect的比较:
例1:

 代码如下 复制代码
response.redirect "../test.asp"
header("location:../test.php");

两者区别:
asp的redirect函数可以在向客户发送头文件后起作用.

 代码如下 复制代码
<html><head></head><body>
<%response.redirect "../test.asp"%>
</body></html>
查是php中下例代码会报错:
<html><head></head><body>
<?
header("location:../test.php");
?>
</body></html>
只能这样:
<?
header("location:../test.php");
?>
<html><head></head><body>...</body></html>

即header函数之前不能向客户发送任何数据.
例2:
asp中

 代码如下 复制代码
<html><head></head><body>
<%
response.redirect "../a.asp"
response.redirect "../b.asp"
%>
</body></html>
结果是重定向a.asp文件.
php呢?
<?
header("location:../a.php");
header("location:../b.php");
?>
<html><head></head><body></body></html>

我们发现它重定向b.php.
原来在asp中执行redirect后不会再执行后面的代码.
而php在执行header后,继续执行下面的代码.
在这方面上php中的header重定向不如asp中的重定向.有时我们要重定向后,不能执行后面的代码:
一般地我们用

 代码如下 复制代码
if(...)
header("...");
else
{
...
}

但是我们可以简单的用下面的方法:

 代码如下 复制代码
if(...)
{ header("...");exit();}

还要注意的是,如果是用Unicode(UTF-8)编码时也会出现问题,需要调整缓存设置.

 代码如下 复制代码
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%if Request.ServerVariables("SERVER_NAME")="s.111cn.net" then
response.redirect "news/index.htm"
else%>
<%end if%>
<script>
var url = location.href;
if(url.indexOf('http://www.111cn.net/')!=-1)location.href='/index/index.htm';
if(url.indexOf('http://www.zhutiy.com/')!=-1)location.href='/index1/index.htm';
if(url.indexOf('http://www.111cn.net/')!=-1)location.href='/cn/index.asp';
if(url.indexOf('http://www.baidu.com/')!=-1)location.href='/cn/index.asp';
</script>
时间: 2024-10-31 20:00:44

PHP header() 函数使用方法总结的相关文章

CSS细节:选择器、单位、函数(方法)

文章简介:这篇文章讲到的特性,最赞的一点是它们解决了现实的问题,从琐碎而繁复的选择器到建立响应式网站的新挑战.实际上,我期待每一个特性被使用到最普通的项目当中. 未来的CSS太让人兴奋了:一方面,是全新的页面布局方式:另一方面,是酷炫的滤镜.颜色等视觉效果.这些CSS,受开发者追捧,被杂志和博客文章铺天盖地地介绍. 如果说这些特性是CSS华丽的一面,那我们来看看它朴实的一面:很不起眼的东西,如选择器.单位.函数(方法).我经常说这是繁琐的东西,但我意思是它们能干漂亮的活,这就是我要分享的. 怎么

php获取发送给用户的header信息的方法

 这篇文章主要介绍了php获取发送给用户的header信息的方法,涉及php中headers_list函数的使用技巧,需要的朋友可以参考下     本文实例讲述了php获取发送给用户的header信息的方法.分享给大家供大家参考.具体分析如下: headers_list函数没有参数,并返回一个数组.返回的数组包含一个数字索引表,包含了要发送给客户端的header信息 ? 1 2 3 4 5 6 7 8 9 10 <?php header("Expires: Sat, 12 Dec 1989

PHP header() 函数详细说明(301、404等错误设置)

  如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更多的使用说明,请您参照PHP中文手册,下面是关于header函数的详细使用说明 不管页面有多少header,它会执行最后一个,不过是有条件的,例如: header('Location:http://www.liehuo.net'); header('Location:http://www.g.cn'); header('Location:http://www.baidu.com');

php header函数常见用途

header函数在PHP中是发送一些头部信息的, 我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法.  发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔.  1.重定向.  Header("Location: http://www.mobiletrain.org");  exit; //在每

php获取发送给用户的header信息的方法_php技巧

本文实例讲述了php获取发送给用户的header信息的方法.分享给大家供大家参考.具体分析如下: headers_list函数没有参数,并返回一个数组.返回的数组包含一个数字索引表,包含了要发送给客户端的header信息 <?php header("Expires: Sat, 12 Dec 1989 05:30:00 GMT"); echo "This is some output.<br />"; echo "Headers sent

php的URL重定向header()函数

// URL重定向 function redirect($url, $time=0, $msg=") { //多行URL地址支持 $url = str_replace(array("\n", "\r"), ", $url); if ( empty($msg) ) $msg = "系统将在{$time}秒之后自动跳转到{$url}!"; if (!headers_sent()) { // redirect if (0 === $

php header函数输入图片IE不显示问题

刚开始img.php文件跳转到文件是这样写的 header("Location:图片的绝对网址"); 然后就发现了IE下不能显示图片,全都显示叉,而且直接在IE中输入img.php的网址,网页会跳转到图片网址,但是却提示: HTTP Error 403. The request URL is forbidden. 错误. 修改方法就是: header("Location:图片的相对地址"); 原来是路径问题,分析一下如果是使用绝对地址估计header函数以为是远程不

php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证_php技巧

本文实例讲述了php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证的方法.分享给大家供大家参考,具体如下: 在php中,可以使用Header函数做一些有趣的事情,用户验证就是其中一个很有意思的功能.具体用法: Header("WWW-Authenticate: Basic realm="USER LOGIN""); Header("HTTP/1.0 401 Unauthorized"); 在页首设计这两个Hea

javascript 调用js:javascript中iframe里面的页面调用父窗口js函数的方法

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法.比如有A窗口,A内有个IFRAME. B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数ExpandPage();那么只要在C页面中写如下JS函数就可以了:window.parent.ExpandPage();如果ExpandPage()有参数也可以直接传递合适的参数进去. 本文链接http://www.cxybl.com/html/wyzz/JavaScript_Ajax/20130131/36765.h