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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
浅析PHP绘图技术
Jul 03 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
php中adodbzip类实例
Dec 08 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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 时间日期操作实战
2011/08/26 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python+django+rest框架配置创建方法
2019/08/31 Python
Django实现文件上传和下载功能
2019/10/06 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Python gevent协程切换实现详解
2020/09/14 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
早会主持词
2014/03/17 职场文书
中药专业自荐信范文
2014/03/18 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android