php控制应用程序,PHP会话控制

[TOC]

## HTTP无状态

>[success]无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果 后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

无状态性客户端和服务器端连接通信运行速度快,服务器应答也快。因为无状态,协议对事务处理是没有记忆性的是独立的。所以为了满足后面事务需要前面的事务有关信息,所以事务有关的信息要在协议外发送。

## Cookies

>[success]cookie 常用于识别用户。

Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。 服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑中的Cookie设置选择是否保存这些数据。如果浏览器不允许Cookie保存,则关掉浏览器后,这些数据就消失。

### 如何创建 cookie

**语法**

~~~

setcookie(name, value, expire, path, domain);

~~~

实例

~~~

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 中之前,首先必须启动会话。

~~~

session_start();

?>

~~~

### Session的使用

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:跟数组的使用方法相同

~~~

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] 练习:给留言系统增加登录注册功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值