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+mysql事务rollback&amp;commit示例
Feb 08 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
php实现简单加入购物车功能
2017/03/07 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
Python fileinput模块使用实例
2015/05/28 Python
python实现京东秒杀功能
2018/07/30 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
python 类之间的参数传递方式
2019/12/20 Python
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
四下基层实施方案
2014/03/28 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
会计实训报告范文
2014/11/04 职场文书
会议室管理制度范本
2015/08/06 职场文书
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers