php简要札记
1.0 Cookie
关于cookie的描述
- 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
- 在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段Cookie里追加新的商品信息。结帐时,服务器读取发送来的Cookie就行了。
- Cookie另一个典型的应用是当登录一个网站时,网站往往会请求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上。第二次登录时,如果该Cookie尚未到期,浏览器会发送该Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。
cookie小结
cookie是一个文件,用来存储当前的一些信息和服务器保持交流
在前端介绍的sessionStorage和localStorage也是类似的功能
内容 | cookie | localStorage | sessionStorage |
---|---|---|---|
生命周期 | 一般由服务器生成,可设置失效的时间,如果在浏览器端生成cookie,默认关闭浏览器后失效 | 除非被删除,否则永久保存 | 仅在当前会话下有效,关闭页面或者浏览器后被删除 |
数据大小 | 4k | 20M | 5M |
与服务器端通信 | 携带在http请求头中,若保存cookie过多数据会带来性能问题 | 仅在客户端即浏览器中保存,不参与和服务器的通信 | 仅在客户端即浏览器中保存,不参与和服务器的通信 |
易用性 | 需要程序员自己封装 | 原生接口可以接受,亦可以再次封装来对obj和Arr有更好的支持 | 原生接口可以接受,亦可以再次封装来对obj和Arr有更好的支持 |
使用cookie
<?php
// 创建cookie
// setcookie("username", "tylor"); // 可以在请求头中查看
// 判断是否拥有某个指定名称的cookie值 -- $_COOKIE
if(isset($_COOKIE["username"])) {