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&mysql(四)
Oct 09 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
PHP性能优化大全(php.ini)
May 20 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
PHP文件操作实例总结
Sep 27 PHP
php封装的smarty类完整实例
Oct 19 PHP
PHP addslashes()函数讲解
Feb 03 PHP
tp5.1 框架join方法用法实例分析
May 26 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 无法载入mysql扩展
2010/03/12 PHP
PHP print类函数使用总结
2010/06/25 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
品牌宣传方案
2014/03/21 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
配置nginx负载均衡
2022/05/06 Servers