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 相关文章推荐
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
php中转义mysql语句的实现代码
Jun 24 PHP
20个PHP常用类库小结
Sep 11 PHP
基于Zookeeper的使用详解
May 02 PHP
php汉字转拼音的示例
Feb 27 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
ThinkPHP3.1基础知识快速入门
Jun 19 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
php自定义错误处理用法实例
Mar 20 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 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
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
js 内存释放问题
2010/04/25 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
python MySQLdb使用教程详解
2018/03/20 Python
如何用python整理附件
2018/05/13 Python
python计算两个数的百分比方法
2018/06/29 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
酒店led欢迎词
2014/01/09 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
质量保证书
2015/01/17 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers