ThinkPHP关于session的操作方法汇总


Posted in PHP onJuly 18, 2014

本文详细讲述了ThinkPHP关于session的各种操作方法,详情如下:

ThinkPHP操作session官方的说明文档如下:

start 启动session
pause 暂停session
clear 清除session
destroy 销毁session
get 获取session值
getLocal 获取私有session值
set 设置session值
setLocal 设置私有session值
name 获取或者设置session_name
is_set 是否设置session值
is_setLocal 是否设置私有session值
id 获取或者设置session_id
path 获取或者设置session_save_path
setExpire 设置session过期时 间
setCookieDomain 设置有效域名
setCallback 设置Session 对象反序列化时候的回调函数

最常用的操作方法示例代码如下:

// 检测Session变量是否存在
Session::is_set('name');
// 给Session变 量赋值
Session::set('name','value');
// 获取Session变量
Session::get('name');

和Session相关的配置参数代码如下:

'SESSION_NAME'=>'ThinkID',        // 默认Session_name
'SESSION_PATH'=>'',            // 采用默认的Session save path
'SESSION_TYPE'=>'File',            // 默认Session类型 支持 DB 和 File 
'SESSION_EXPIRE'=>'300000',        // 默认Session有效期
'SESSION_TABLE'=>'think_session',    // 数据库Session方式表名
'SESSION_CALLBACK'=>'',            // 反序列化对象的回调方法

其中SESSION_NAME 参数需要注意,如果需要在不同的项目之间不共享传递Session的值,请设置不同的值,否则请保留相同的默认值。
如果设置了相同的SESSION_NAME的值,但是又希望创建基于项目的私有Session空间,应该怎么处理呢?ThinkPHP还支持以项目为 Session空间的私有Session操作,以之前的常用操作为例,我们更改如下:

// 检测Session变量是否存在(当前项目有效)
Session::is_setLocal('name');
// 给Session变 量赋值(当前项目有效)
Session::setLocal('name','value');
// 获取Session变量(当前 项目有效)
Session::getLocal('name');

这样,和全局的Session操作就不会冲突,可以用于一些特殊情况的需要。
ThinkPHP支持数据库方式的Session操作,设置SESSION_TYPE的值为DB就可以了,如果使用数据库方式,还要确保设置好SESSION_TABLE的值,并且导入下面的DDL到你的 数据库(以MySQL为例子):

CREATE TABLE `think_session` (
`id` int(11) unsigned NOT NULL auto_increment,
`session_id` varchar(255) NOT NULL,
`session_expires` int(11) NOT NULL,
`session_data` blob,
PRIMARY KEY(`id`)
)

注意,Db Session方式的数据库连接会采用项目的数据库配置信息进行连接。除了数据库方式外,还可以增加其它方式的Session保存机制,例如内存方式、 Memcache方式等,我们只要增加相应的过滤器就行了,使用session_set_save_handler 方法,具体的方法定义参考Think.Util.Filter下面的FilterSessionDb.class.php 文件的实现。
 
制作了一个简单的登陆判断
登陆检测之后赋予Session值,使Session的值为非空即为假的false

$_SESSION[C('USER_AUTH_KEY')] = $logInFind['id'] ;

其中 [C('USER_AUTH_KEY')]为ThinkPHP的内置方法和函数类。在未配置config.php文件时默认为空
把$logInFind['id'] 取出的帐号值赋予它,默认为关闭页面Session就自动删除消失!
其它页面使用下面格式判断

if(!isset($_SESSION[C('USER_AUTH_KEY')])) { //isset 是检测变量是否赋值!
   $this->redirect('Login','Login'); //转到注册页面
}
PHP 相关文章推荐
使用PHP模拟HTTP认证
Oct 09 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
php抽奖小程序的实现代码
Jun 18 PHP
解析link_mysql的php版
Jun 30 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
php二维数组排序详解
Nov 06 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
php中实现精确设置session过期时间的方法
Jul 17 #PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 #PHP
浅谈php安全性需要注意的几点事项
Jul 17 #PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 #PHP
ThinkPHP应用模式扩展详解
Jul 16 #PHP
CodeIgniter模板引擎使用实例
Jul 15 #PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 #PHP
You might like
牡丹941资料
2021/03/01 无线电
php文件操作实例代码
2012/05/10 PHP
简单的自定义php模板引擎
2016/08/26 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
python为tornado添加recaptcha验证码功能
2014/02/26 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Python ini文件常用操作方法解析
2020/04/26 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
工程负责人任命书
2014/06/06 职场文书
绿色环保标语
2014/06/12 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
党小组考察意见
2015/06/02 职场文书
卫生主题班会
2015/08/14 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python