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的宝库目录--PEAR
Oct 09 PHP
PHP版自动生成文章摘要
Jul 23 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
基于empty函数的判断详解
Jun 17 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
PHP中命名空间的使用例子
Mar 22 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 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验证session无效的解决方法
2014/11/04 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
使用tensorflow实现线性回归
2018/09/08 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
python实现反转部分单向链表
2018/09/27 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
管理科学大学生求职信
2013/11/13 职场文书
军训自我鉴定
2013/12/14 职场文书
公司道歉信范文
2014/01/09 职场文书
销售个人求职信范文
2014/04/28 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
Nginx限流和黑名单配置
2022/05/20 Servers