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 相关文章推荐
实时抓取YAHOO股票报价的代码
Oct 09 PHP
PHP完整的日历类(CLASS)
Nov 27 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php广告加载类用法实例
Sep 23 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
php单例模式示例分享
Feb 12 PHP
PHP中foreach()用法汇总
Jul 02 PHP
PHP程序员的技术成长规划
Mar 25 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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+java实现自动新闻滚动窗口
2006/10/09 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
Python检测生僻字的实现方法
2016/10/23 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Python进度条的制作代码实例
2019/08/31 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
Python项目跨域问题解决方案
2020/06/22 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
2015年小学英语教师工作总结
2015/05/12 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
党章学习心得体会2016
2016/01/14 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android