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 获取完整url地址
Dec 20 PHP
php 分页原理详解
Aug 21 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
PHP经典面试题集锦
Mar 19 PHP
php输出xml属性的方法
Mar 19 PHP
PHP自动生成表单代码分享
Jun 19 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
PHP使用函数用法详解
Sep 30 PHP
实例分析10个PHP常见安全问题
Jul 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
计数器详细设计
2006/10/09 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
详解php实现页面静态化原理
2017/06/21 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
vue之延时刷新实例
2019/11/14 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
Python中扩展包的安装方法详解
2017/06/14 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
优秀学生获奖感言
2014/02/15 职场文书
七一建党节慰问信
2015/02/14 职场文书
工程主管竞聘书
2015/09/15 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL