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大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
PHP中设置时区方法小结
Jun 03 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
基于laravel缓冲cache的用法详解
Oct 23 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 PHP
PHP7移除的扩展和SAPI
Mar 09 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
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
中专毕业生自我鉴定
2014/02/02 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
政风行风整改方案
2014/10/25 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
违纪检讨书
2015/01/27 职场文书
雨中的树观后感
2015/06/03 职场文书
六年级语文教学反思
2016/03/03 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Vue如何清空对象
2022/03/03 Vue.js
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
Pandas 数据编码的十种方法
2022/04/20 Python
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript