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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
Python切片用法实例教程
2014/09/08 Python
理解Python中的类与实例
2015/04/27 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
python实现的生成word文档功能示例
2019/08/23 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
有趣的广告词
2014/03/18 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
学生检讨书范文
2014/10/30 职场文书
介绍信怎么写
2015/05/05 职场文书
四大名著读书笔记
2015/06/25 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android