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中ADODB类详解
Mar 25 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
php与阿里云短信接口接入操作案例分析
May 27 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
当海贼王变成JOJO风
2020/03/02 日漫
dedecms中常见问题修改方法总结
2007/03/21 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
php日期操作技巧小结
2016/06/25 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
Vue父组件调用子组件事件方法
2018/02/23 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
实现vuex原理的示例
2020/10/21 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
对python中执行DOS命令的3种方法总结
2018/05/12 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
python实现kmp算法的实例代码
2019/04/03 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
销售心得体会
2014/01/02 职场文书
一名老师的自我评价
2014/02/07 职场文书
导游词之江南周庄
2019/12/06 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python