cookie 和 session
创建 cookie
cookie 必须在发送其他任何信息之前从服务器发送到客户端,如果使用缓冲可在任何位置
setcookie 函数发送 cookie 用法:
setcookie(name,value);
读取 cookie
函数 setcookie 将 cookie 数据存放在数组 $_COOKIE 中
$_COOKIE['name']
添加 cookie 参数
setcookie 函数可以接受 5 个参数:
setcookie(name,value,expiration,path,domain,secure,httponly);
- name
- value
- expiration 指定 cookie 过期时间 没有设置则为 session(浏览器)关闭为止
- path 指定 web 站点特定文件夹特定域的 cookie
- domain 指定子域 cookie
- secure 指定 cookie 应当通过 HTTPS 连接传送 1 为必须使用安全连接
- httponly 限制对 cookie 的访问防止 xss 的利器
删除 cookie
通常 cookie 会在用户浏览关闭或者过期时间到了之后自动过期,但是我们还是需要手动删除它
删除 cookie 有两种方法:
setcookie(name,''); or setcookie(name,FALSE);
把值设为空setcookie(name,FALSE,time() - 600);
把过期时间设为过去
什么是 session
session 是一种解决方案,解决的问题是它可以跟踪用户在一系列页面访问的数据
session 和 cookie 的区别:
- cookie 存储在客户端,session 存储在服务器端
- session 通常更安全,数据不会在客户端和服务器端来回传输
- session 能够存储比 cookie 更多的东西
- session 可以在用户不接受他们浏览器中的 cookie 时工作
- cookie 更加容易创建和检索
- cookie 对服务器造成的压力更少
- cookie 能够持续更长的时间
创建 session
使用 session_start 函数创建,访问或者删除 session
这个函数在首次启动时,会发送一个 cookie,所以必须在任何 HTML 发送给浏览器之前调用,在使用 session 的页面中,脚本必须起始行调用 session_start 函数
在第一次开启 session 时,会产生一个随机的 session ID,并向浏览器发送一个名为 PHPSESSID 的 cookie
启用 session,向数组 $_SESSION 赋值的形式为:
$_SESSION['username']= 'daige';
函数 session_name 函数可以修改 session 的名称来替代 PHPSESSI,而且应该在调用 session_start 函数之前使用
函数 session_set_cookie_params 函数用来修改 session cookie 的设置
访问 session 变量
创建或者访问一个存在的 session,都必须从 session_start 函数开始
访问变量和普通数组一样,如$_SESSION['mail'];
isset($_SESSION['var'])
可以查看特定的 session 值是否存在- session中的数据都是以纯文本的方式保存在一个可读可写的文本文件中,不要在 session 中存放敏感的数据
- 为了提高安全性,session 可以加密存储,读取 session 时解密
删除 session
session 的数据在两个地方存在,所以需要在两个地方进行删除操作
必须从 session_start 函数开始,然后设置 $_SESSION 数组来删除 session 值
$_SESSION = array();
最后在服务器上删除 session 数据session_destroy();