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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
php遍历目录viewDir函数
Dec 15 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
浅谈php7的重大新特性
Oct 23 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
YII框架批量插入数据的方法
Mar 18 PHP
php中请求url的五种方法总结
Jul 13 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 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
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
php图像处理类实例
2015/07/28 PHP
分享PHP守护进程类
2015/12/30 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
Vue异步加载about组件
2017/10/31 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
python异常处理try except过程解析
2020/02/03 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
python语言中有算法吗
2020/06/16 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
教师岗位职责范本
2013/12/29 职场文书
大学生学业生涯规划
2014/01/05 职场文书
2014教师研修学习体会
2014/07/08 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
Redis三种集群模式详解
2021/10/05 Redis