Session/Cookie

1. PHP的HTTP函数

函数 描述 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所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie负载请求资源的HTTP请求头上发给server。

cookie一般保存在内存里,所以cookie的生命周期为浏览器的会话期间,关闭浏览器窗口的话cookie会自动消失。

当然如果设定了cookie的过期时间,浏览器会把cookie存在硬盘上。

  • session

可以把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重写来代替。

  • cookie和session的区别

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数据的问题

点击打开链接




你可能感兴趣的:(PHP)