一会话控制
会话支持一般指 cookie 和 session, 在 ThinkPHP 里为了方便开发, 封装了 cookie 和 session 方法
(1)session 方法
在函数库封装了 session 方法
session(name,value) 创建一个名为 name 的 session, 值为 value
$value = session(name) 读取 session 中的 name 元素值, 并赋值给变量 $value
session(name,null) 删除 session 中名为 name 元素的值
session(null) 删除全部 session 值
session() 读取全部的 session 信息
session(?name) 判断名为 name 的 session 元素是否存在, 存在返回 true, 否则返回 false
案例: 在方法中使用 session 方法, 对 session 进行操作
设置 session
- session(name,tony);
- session(age,23);
- var_dump($_SESSION);
读取 session
$value = session(name);
下面案例比较简单, 不一一列举
(2)cookie 方法
在函数库封装了 cookie 方法
cookie(name,value) 创建一个名为 name 的 cookie, 值为 value
cookie(name,value,3600) 创建一个名为 name 的 cookie, 值为 value, 有效期为 3600s
$value=cookie(name) 读取名为 name 的 cookie, 赋值给 value
cookie(name,null) 删除名为 name 的 cookie
cookie(null) 删除所有, 但是测试后发现无效查看手册, 发现该方法有 BUG 若想实现, 则需更改底层实现代码在下面写到
cookie() 获取全部的 cookie
注意: 若不指定时间, 则 session 会话结束时到期
修改底层代码:
- // 清除指定前缀的所有 cookie
- if (is_null($name)) {
- if (empty($_COOKIE))
- return null;
- // 要删除的 cookie 前缀, 不指定则删除 config 设置的指定前缀
- $prefix = empty($value) ? $config[prefix] : $value;
- if (!empty($prefix) || $name == null) {// 如果前缀为空字符串将不作处理直接返回
- foreach ($_COOKIE as $key => $val) {
- if (0 === stripos($key, $prefix)||$name == null) {// 函数库 1379 行
- setcookie($key, , time() - 3600, $config[path], $config[domain],$config[secure],$config[httponly]);
- unset($_COOKIE[$key]);
- }
- }
- }
- return null;
- }elseif( === $name){
- // 获取全部的 cookie
- return $_COOKIE;
- }
来源: http://www.bubuko.com/infodetail-2544774.html