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动态创建Flash动画
Oct 09 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
php绘图之生成饼状图的方法
Jan 24 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
php语法检查的方法总结
Jan 21 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
php修改word的实例方法
Nov 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操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php 魔术方法详解
2014/11/11 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
python Flask实现restful api service
2017/12/04 Python
pycharm修改file type方式
2019/11/19 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
装饰资料员岗位职责
2013/12/30 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
申报优秀教师材料
2014/12/16 职场文书
离婚协议书格式
2015/01/26 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers