1. cookie简介
- cookie是存储在客户浏览器中的数据,通过cookie来跟踪与存储用户数据
- 一般cookie通过HTTP headers从服务端返回到客户端
- cookie存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置
- PHP通过setcookie函数设置cookie,任何从浏览器发回的cookie都会自动存储在$_COOKIE全局变量中,可以通过$_COOKIE['key']的形式读取某个cookie值
2. 设置cookie
- setcookie函数:有7个可选参数
- name:名称,之后可以通过$_cookie['name']进行访问
- value:cookie的值
- expire:过期时间,Unix时间戳(Unix纪元:格林威治时间1970年1月1日00:00:00以来的秒数),可以表示为time()+秒数;默认为0,即关闭浏览器即失效
- path:有效的服务器路径,如果设置成‘/’则对整个域名都有效,如果设置为‘/foo/’,则对域名中的/foo/目录及其子目录有效
- domin:有效域名/子域名,默认对整个域名有效,如果设置成‘www.imooc.com’则只对www子域有效
- secure:是否仅通过HTTPS连接传送给客户
- httponly:是否仅通过HTTP协议访问
3. 删除cookie
setcookie('name','',time()-1);
4. session与cookie的异同
- cookie的缺点:不太安全,容易被盗用导致cookie欺骗;单个cookie只能最大存储4k数据;每次请求都进行网络传输,占用带宽;只支持字符串类型
- session:用于保持用户连续访问Web应用时的相关数据,将用户的会话数据存储在服务端,没有大小限制,通过session_id进行用户识别,支持多种数据类型
- 联系:PHP默认情况下session_id是通过cookie来保存的
5. 使用session
session_start()开启session,然后通过全局变量$_SESSION进行session续写
session_start();
$_SESSION['test']=time();
6. 删除和销毁session
- 删除某个session值使用unset()函数
session_start();
$_SESSION['test']=time();
unset($_SESSION['time']);
- 删除所有的session使用session_destroy()函数,但是session_id仍然存在,而且不会立即销毁$_SESSION中的值,只有当下次访问时才为空
session_start();
$_SESSION['test']=time();
$_SESSION['name']='job';
session_destroy();