函数 | 描述 | PHP |
---|---|---|
header() | 向客户端发送原始的 HTTP 报头 | 3 |
headers_list() | 返回已发送的(或待发送的)响应头部的一个列表。 | 5 |
headers_sent() | 检查 HTTP 报头是否发送/已发送到何处。 | 3 |
setcookie() | 向客户端发送一个 HTTP cookie。 | 3 |
setrawcookie() | 不对 cookie 值进行 URL 编码,发送一个 HTTP cookie。 | 5 |
Header():
header() 函数向客户端发送原始的 HTTP 报头。
1. 通过 header("Loacation: url") 可以实现页面跳转的功能
2. 用户可能会设置一些选项来更改浏览器的默认缓存设置。通过发送上面的报头,您可以覆盖任何这些设置,强制浏览器不进行缓存!
3. 提示用户保存一个生成的 PDF 文件(Content-Disposition 报头用于提供一个推荐的文件名,并强制浏览器显示保存对话框)
举例:http://www.w3school.com.cn/php/func_http_header.asp
Headers_list(): 返回已发送的响应头部的一个列表,返回包含报头的数组。
headers_sent():检查HTTP报头是否发送到,已发送则返回true,否则返回false;
2. session和cookie
cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的,浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie负载请求资源的HTTP请求头上发给server。
cookie一般保存在内存里,所以cookie的生命周期为浏览器的会话期间,关闭浏览器窗口的话cookie会自动消失。
当然如果设定了cookie的过期时间,浏览器会把cookie存在硬盘上。
可以把session看做server端的一个hash表,key_value就是session id,一般session id是一个既不会重复又不容易被找到规律的字符串,在响应之后,session id会返回给client端保存,保存的方式就是cookie。
但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时,仍然能够把session id传递回服务器。 经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器 会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如: <form name="testform" action="/xxx"> <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> <input type="text"> </form> 实际上这种技术可以简单的用对action应用URL重写来代替。
a) cookie放在浏览器上面,session数据放在服务器上。
所以setcookie是server向client发送一个cookie
b) 因此session比cookie更安全,因为别人可以分析放在本地的cookie并且进行cookie欺骗
c) session过期前都会保存在服务器上,当访问增多的时候,server端的workload会增大
d) 单个cookie在client端的限制是3k,也就是说一个站点在client端存放的cookie不能超过3k
因此,重要信息可以存放为session,其他信息可以存放为cookie
3. 多web服务器共享session数据的问题
点击打开链接