[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] 练习:给留言系统增加登录注册功能
- 序言
- 第一章:准备工作
- 写在学习之前的话
- web应用开发结构
- 开发工具/环境
- 第二章:展现层面(HTML/CSS)
- HTML简介
- HTML基础
- HTML编码
- HTML链接
- HTML图像
- HTML列表
- HTML表单
- HTML表格(分水岭)
- HTML 实体
- HTML框架
- CSS层叠样式表
- CSS选择器
- CSS文本/字体
- CSS继承和叠加
- CSS框模型
- CSS浮动(分水岭)
- CSS定位
- CSS背景
- CSS图标字体
- CSS补充
- 开发技巧
- 第三章:展现层面(Javascript)
- JS简介
- JS实现
- JS输出交互
- JS变量
- JS数据类型
- JS运算符
- JS流程控制(分水岭)
- JS函数
- JS数组
- JS对象(分水岭)
- JS数组对象
- JS字符串对象
- JS数学对象
- JS日期对象
- JS BOM对象(分水岭)
- JS DOM对象
- JS事件对象
- JS元素对象
- JS DOM节点
- 第四章:展现层面(Jquery)
- JQ简介
- JQ使用
- JQ选择器
- JQ筛选
- JQ属性
- JQ-CSS
- JQ事件
- JQ文档处理
- JQ效果
- JQ-ajax
- 第五章:逻辑/业务层面(PHP)
- PHP简介
- PHP变量
- PHP数据类型
- PHP常量
- PHP运算符
- PHP流程控制
- PHP函数(分水岭)
- PHP日期
- PHP数学
- PHP数组
- PHP字符串
- PHP正则表达式(分水岭)
- PHP目录操作
- PHP文件
- PHP上传/下载
- PHP面向对象(分水岭)
- PHP图像处理
- PHP会话控制
- Ajax异步处理
- PHPMysql扩展
- PHPMysqli扩展
- PHPPdo扩展
- PHP接口
- PHP命名空间
- 第六章:逻辑/业务层面(框架设计)
- 第七章:存储层面(mysql)
- Mysql基础
- Mysql Sql简介
- Mysql数据库
- Mysql数据类型
- Mysql数据表
- Mysql操作记录
- Mysql查询
- Mysql修改表结构
- Mysql日期与时间
- Mysql分组统计
- Mysql多表查询
- Mysql安全
- Mysql存储引擎
- Mysql事务
- Mysql视图
- Mysql触发器
- Mysql存储过程
- Mysql存储函数
- Mysql优化
- 第八章:服务器(Linux)
- Linux介绍与安装
- Shell
- 目录与文件操作
- VIM编辑器使用
- 帐号管理
- SUDO
- 权限控制
- 压缩与打包
- 软件安装
- 计划任务
- 进程管理
- 宝塔Linux面板