HTTP:
HTTP的两大特点:无连接无状态
无连接:每次连接只处理一个请求,服务器处理完客户端的请求,响应给客户端之后就断开本次连接(及时的释放系统资源)
无状态:每次请求完之后,服务器都不会记住是谁发送过来的。
基于http的两大特点,会话控制出现了。
主要是达成服务器跟浏览器之间持续连接的状态,解决无状态的问题,让服务器记住是谁。
cookie:
内存Cookie :由浏览器维护,保存在内存中,关闭浏览器就消失,存在时间短暂
硬盘cookie : 保存在硬盘中,过期时间到了,才自动销毁(7天免登录,购物车)
设置:setcookie
获取:$_COOKIE
更新:setcookie()进行覆盖
删除:set('user_name',' ',time()-1);
setcookie()与setrawcookie()--->不会对值进行url编码
注意:更新和删除cookie的时候,需要保持$path和$domain是一致的。
js操作cookie(自行封装)
cookie实现免登录思路:
在网站页面中通过auth凭证去判断用户是不是合法登录(防止伪造)
cookie类的封装
h5中的localStorage:
查看下当前浏览器的支持情况:(可以到caniuse.com查看浏览器的支持情况=》主流浏览器基本都支持,大胆使用)
对localStorage的api进行封装(加入过期时间)
session:
session的工作原理
去php.net官网去查看session的配置说明(挺实用)
用户禁用了cookie之后,我们也可以传递sessid,只不过是附着在了地址栏上,很不安全。(不建议使用)
销毁会话:
session的应用:图片验证码
利用gd2生成:
①创建画布 imagecreatetruecolor — 新建一个真彩色图像
②画布背景颜色填充 imagecolorallocate — 为一幅图像分配颜色
③生成验证码字符串 随机生成
④字符串写入画布 imagettftext — 用 TrueType 字体向图像写入文本
⑤写入干扰像素点 imagesetpixel — 画一个单一像素
⑥生成图片 header(' Content-Type:image/png '); imagepng — 以 PNG 格式将图像输出到浏览器或文件(在生成之前不能有任何输出)
⑦销毁画布 imagedestroy — 销毁一图像
⑧ return $str
在使用的地方,保存$str到session中去。
session默认采取文件的方式存储在磁盘中,I/o开销严重,影响网站的性能。
php5.4提供了一个接口SessionHandlerInterface,我们可以通过这个接口实现保存session入库、redis、memcache中去。
我们需要实现这个接口(接口里的方法必须得去实现,否则报错)。
见(Session自定义存储及分布式存储:参看https://www.cnblogs.com/52fhy/p/5495425.html)