最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP header() 函数使用方法总结
时间:2022-06-24 19:55:25 编辑:袖梨 来源:一聚教程网
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 // set 404 header: 页面没找到 // 页面被永久删除,可以告诉seo/seo.html" target="_blank">搜索引擎更新它们的urls // 重定向到一个新的位置 延迟一段时间后重定向 // 覆盖 X-Powered-By value // 内容语言 (en = English) //最后修改时间 (在缓存的时候可以用到) // 告诉浏览器要获取的内容还没有更新 // 设置内容的长度 (缓存的时候可以用到): // 用来下载文件: // 禁止缓存当前文档: // plain text file // JPG picture // ZIP file // PDF file // Audio MPEG (MP3,…) file // 显示登录对话框,可以用来进行HTTP认证 |
现在表单的填写,我们可以用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函数可以在向客户发送头文件后起作用.
如
代码如下 | 复制代码 |
<%response.redirect "../test.asp"%> 查是php中下例代码会报错: header("location:../test.php"); ?> 只能这样: header("location:../test.php"); ?> ... |
即header函数之前不能向客户发送任何数据.
例2:
asp中
代码如下 | 复制代码 |
<% response.redirect "../a.asp" response.redirect "../b.asp" %> 结果是重定向a.asp文件. php呢? header("location:../a.php"); header("location:../b.php"); ?> |
我们发现它重定向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.111com.net" then response.redirect "news/index.htm" else%> <%end if%> |
相关文章
- 以闪亮之名店长体验流霞季怎么玩 缘溪临霞套装活动介绍 12-31
- 未定事件簿旧梦新生左然篇怎么玩 旧梦新生左然篇活动介绍 12-31
- 未定事件簿左然破浪远行怎么样 12-31
- 桃源深处有人家行医问诊怎么玩 12-31
- 恋与制作人跨年福利有哪些 恋与制作人跨年福利内容介绍 12-31
- 阴阳师协同对弈大乱斗怎么玩 阴阳师协同对弈大乱斗活动介绍 12-31