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 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
一个显示天气预报的程序
Oct 09 PHP
BBS(php & mysql)完整版(四)
Oct 09 PHP
PHP读取PPT文件的方法
Dec 10 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/14 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
selenium+python实现自动登录脚本
2018/04/22 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
夜大毕业自我鉴定
2013/10/11 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
网络工程师职业规划
2014/02/10 职场文书
合伙协议书
2014/04/23 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书