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 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
php header()函数使用说明
Jul 10 PHP
php xml-rpc远程调用
Dec 19 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
zf框架的校验器InArray使用示例
Mar 13 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP微商城开源代码实例
Mar 27 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 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
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
小程序转发探索示例
2019/02/19 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
Python异常处理总结
2014/08/15 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
python中的格式化输出用法总结
2016/07/28 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
python实现坦克大战
2020/04/24 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
用Python制作音乐海报
2021/01/26 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
公司员工离职证明书
2014/10/04 职场文书
教师工作总结范文2014
2014/11/10 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
Python字典的基础操作
2021/11/01 Python
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript