[TOC] ## HTTP无状态 >[success]无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果 后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 无状态性客户端和服务器端连接通信运行速度快,服务器应答也快。因为无状态,协议对事务处理是没有记忆性的是独立的。所以为了满足后面事务需要前面的事务有关信息,所以事务有关的信息要在协议外发送。 ## Cookies >[success]cookie 常用于识别用户。 Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。 服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑中的Cookie设置选择是否保存这些数据。如果浏览器不允许Cookie保存,则关掉浏览器后,这些数据就消失。 ### 如何创建 cookie **语法** ~~~ setcookie(name, value, expire, path, domain); ~~~ 实例 ~~~ <?php setcookie("user", "Alex Porter", time()+3600); echo $_COOKIE["user"]; //$_COOKIE 变量用于取回 cookie 的值。 ?> ~~~ ### COOKIE生命周期 Cookie有一个Expires(有效期)属性,这个属性决定了Cookie的保存时间,服务器可以通过设定Expires字段的数值,来改变Cookie的保存时间。如果不设置该属性,或设为0,那么Cookie只在浏览网页期间有效,关闭浏览器,这些Cookie自动消失。 ### COOKIE数量不大小 #### 数量 各个浏览器中会不同,同一浏览器版本也不同 IE8允许每个域保存50个cookie,Firefox允许每个域保存50个cookie #### 大小 一般来说允许4Kb,不同浏览器,不同版本略有不同 ### COOKIE储存数组或对象 #### serialize(序列化) ~~~ string serialize ( mixed $value ) ~~~ serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。反函数:unserialize #### json_encode(转json) ~~~ string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] ) ~~~ json_encode()成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。 反函数:json_decode(对 JSON 格式的字符串进行解码) ## SESSION session从用户访问页面开始,到断开和网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个UID,用来UID标识当前用户,和其他用户进行区分。 session会话时,sessionid会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的 Session目录中。 session通过UID接受每一个访问请求,从而识别当前用户、跟踪和保持用户具体资料,以及Session变量(在Session活动期间,可在 Session中存储数字或文字资料),比如session_name等等,这些变量信息保存在服务器端。 ### 开始 PHP Session 在您把用户信息存储到 PHP session 中之前,首先必须启动会话。 ~~~ <?php session_start(); ?> ~~~ ### Session的使用 存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:跟数组的使用方法相同 ~~~ <?php session_start(); //开启session $_SESSION["views"]=1; //往session存储数据 echo $_SESSION["views"]; //读取session里面的数据 unset($_SESSION["views"]); //删除session变量 $_SESSION=array();//删除所有session变量,不删除session文件 session_unset(); //释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id session_destroy(); //删除当前用户对应的session文件以及释放session id,内存中的$_SESSION变量内容依然保留 ?> ~~~ ### SESSION垃圾回收 修改php.ini配置可以进行session垃圾回收机制的配置 session.gc_probability = 1(session清除基数 ) session.gc_divisor = 100(定义在每次初始化会话时,启动垃圾回收程序的概率。这个收集概率计算公式如下:session.gc_probability/session.gc_divisor; 对会话页面访问越频繁,概率就应当越小。建议值为1/1000~5000。) session.gc_maxlifetime = 1440(超过此参数所指的秒数后,保存的数据将被视为'垃圾'并由垃圾回收 程序清理。) >[danger] 练习:给留言系统增加登录注册功能