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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
深入PHP异步执行的详解
Jun 03 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php实现的二分查找算法示例
Jun 20 PHP
PHP基于swoole多进程操作示例
Aug 12 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 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 中的输出缓冲
2006/12/21 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
详解vue v-model
2020/08/31 Javascript
Python表示矩阵的方法分析
2017/05/26 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
邀请函的格式
2015/01/30 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android