PHP程序员之会话控制

  • A+
所属分类:PHP
HTTP两大特点:无状态、无连接
一、Cookie
1.Cookie保存在客户端中
  • 内存Cookie(由浏览器来维护,保存在内存中,浏览器关闭之后就消失了)
  • 硬盘Cookie(保存在硬盘里,有一个过期时间,除非用户手动清除或者到了过期时间,否则硬盘 Cookie不会被删除)
2.Cookie使用场景
  • 永久登录
  • 网站换肤
  • 购物车
3.操作Cooke
  • 设置Cookie setcookie()
  • 读取Cookie Cookie数据保存在$_COOKIE变量中
  • 更新、删除Cookie 更新和删除要保证path和domain和之前的保持一致
4.防止网站XSS攻击,可以将cookeie的httponly属性设置为true,如果为true,那么客户端的JS就无法操作这个Cookie
5.通过header的方式设置Cookie
6.Cookie中不要存储敏感信息,不要把Cookie当作客户端的存储器.首先,每个域名允许Cookie是有限的,根据不同浏览器,限制不同,Cookie中保存数据的最大字节数是4kb,Cookie设置成功之后,每次请求会附着在http头中一起发送,如果Cookie较多的话,会浪费我们的带宽
7.HTML5中的存储容器localStorage 存储大小一般为5MB 除非手动清除,否则永久存储。仅保存在客户端(浏览器中),不参与和服务器的通信,提供了一些官方API可直接使用,只能存储字符串
8.常用API:
  • 设置: localStorage.setItem(key,value)
  • 读取: localStorage.getItem(key)
  • 删除: localStorage.removeItem(key)
  • 全部清除:localStorage.clear()
  • 获取指定键名:localStorage.key(i)
  • 存储对象形式需要转换格式:localStorage.setItem('userInfo',JSON.stringify(userInfo))
二、Session
PHP程序员之会话控制
1.Cookie禁用之后,session还可以使用吗?(可以用,传递sessionid就可以,但不安全)
  • session中有一个属性 session.use_cookies (boolean),是否在客户端用cookie来存放会话ID,默认为1(启用),这种情况下禁用Cookie,则不能使用session。
  • 另外一种session的传递方式是在url中附着sessionid,这种情况下Cookie禁用后,仍然可以使用session
2.session放在文件中,当有成千上万个对话的时候,查询sessionid会很慢
3.session_set_save_handler设置用户自定义会话存储函数
意琳

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: