ThinkPHP中Session用法详解


Posted in PHP onNovember 29, 2014

本文实例讲述了ThinkPHP中Session用法。分享给大家供大家参考。具体如下:

在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有:

Session::set(name, value):注册 session 。

Session::is_set(name):检查Session的值是否设置。

Session::get(name):读取 session 。

Session::clear():清空Session。

Session::destroy():销毁 session 。

ThinkPHP 默认开启了 session 会话,因此在使用 Session 类之前不需要使用 session_start() 函数来开启会话.

使用 session 实例

下面以表单提交的方式注册 session,并在其他两个页面分别以模板方式和操作中以 Session::get 方式读出 session 值.

注册 session

User 模块 sessionTest 操作注册 session 例子:

class UserAction extends Action{  

public function session(){  

if(!emptyempty($_POST['username'])){  

Session::set('username',$_POST['username']);  

}  

$this->display();  

}  

}

sessionTest.html 模板(片段):
<p>  

<present name="_SESSION['username']">{$_SESSION['username']} 你好!  

<a href="__APP__/">首页</a>  

<a href="__URL__/user">本模块其他页面</a>  

<a href="__URL__/logout">注销</a><else />请输入您的用户名:  

</p>  

<form action="__SELF__" method="post">  

<p><input type="text" name="username" /></p>  

<p><input type="submit" value=" 提交 " /></p>  

</form>  

</present>

当填入用户名(如 testuser),点击 提交 按钮后,提交至 sessionTest 方法(即当前页面)处理并注册 session 值,以模板标签 present 来控制输出逻辑,检测到已经注册 $_SESSION['username'] 变量即输出:

testuser 你好! 首页 注销

否则会输出表单。

检测 session 是否注册

模板里检测

在模板里面,可以直接使用 present 或 notempty 甚至 switch 等标签判断 session 变量是否注册,以决定输出对应的 session 值(直接以输出数组单元的方式输出 session 变量值)或显示其他页面元素,具体可参见本教程模板标签部分内容以及上面的例子.

操作里检测

在操作里,可以使用 Session::is_set 方法检查 Session 的值是否设置,例如 User 模块 user 操作如下:

public function user(){  

// 由于直接在操作里输出,为避免乱码  

header("Content-Type:text/html; charset=utf-8");  

if(Session::is_set('username')){  

echo Session::get('username').' 你好';  

}else{  

echo 'session 未注册';  

}  

} 

其他模块页面

在其他页面(如 Index/index)里,判断并读取 session 的代码片段:

<present name="_SESSION['username']">{$_SESSION['username']} 你好!<else />未登录</present>

session 无效(无法传递)

ThinkPHP 中可能出现 session 无效(无法传递至其他页面)的情况,可能的原因如下:

使用 Session 类头字母未大写,如:session::set.

页面有信息输出,如入口文件有空行等.

服务器上(Linux/Unix)的 session 存储路径(session.save_path)权限不正确导致无法将 session 信息正确存储.

作用域问题建议:

ThinkPHP 的 Session 类只是对 session 做了简单的包装,实际可以在操作中直接使用 PHP 原生的 session 函数,官方亦是如此建议.

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
php关联数组快速排序的方法
Apr 17 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
PHP创建对象的六种方式实例总结
Jun 27 PHP
thinkphp的静态缓存用法分析
Nov 29 #PHP
thinkphp中memcache的用法实例
Nov 29 #PHP
thinkPHP实现瀑布流的方法
Nov 29 #PHP
php删除左端与右端空格的方法
Nov 29 #PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 #PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 #PHP
Sublime里直接运行PHP配置方法
Nov 28 #PHP
You might like
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
探讨如何把session存入数据库
2013/06/07 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
javascript类型转换示例
2014/04/29 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
服务理念标语
2014/06/18 职场文书
求职教师自荐书
2014/06/19 职场文书
普通党员整改措施
2014/10/24 职场文书
给朋友的赠语
2015/06/23 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
Java版 单机五子棋
2022/05/04 Java/Android
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript