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生成静态HTML速度快类库
Mar 18 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 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设计模式中单例模式的应用分析
2013/05/15 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
原生js页面滚动延迟加载图片
2015/12/20 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
在Python的Django框架中编写编译函数
2015/07/20 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python绘制动态水球图过程详解
2020/06/03 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
python如何设置静态变量
2020/09/07 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
应届大学生自荐信格式
2013/09/21 职场文书
公司营业员的工作总结自我评价
2013/10/05 职场文书
总会计师岗位职责
2014/02/19 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
食品流通安全承诺书
2014/05/22 职场文书
计划生育工作汇报
2014/10/28 职场文书