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 相关文章推荐
表单复选框向PHP传输数据的代码
Nov 13 PHP
PHP 字符串 小常识
Jun 05 PHP
PHP 编程安全性小结
Jan 08 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
基于php验证码函数的使用示例
May 03 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
Yii框架分页实现方法详解
May 20 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP执行系统命令函数实例讲解
Mar 03 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP面向对象概念
2011/11/06 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
如何在PHP中生成随机数
2020/06/04 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
python实现删除文件与目录的方法
2014/11/10 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
员工自我鉴定范文
2013/10/06 职场文书
优秀毕业生自荐信范文
2014/01/01 职场文书
工会主席岗位责任制
2014/02/11 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
优秀班组申报材料
2014/12/25 职场文书
学雷锋倡议书
2015/01/19 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
我爱我班主题班会
2015/08/13 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android