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 相关文章推荐
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
PHP实现的浏览器检查类
Apr 11 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
浅析Yii2缓存的使用
May 10 PHP
php字符串函数 str类常见用法示例
May 15 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
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
Prototype使用指南之selector.js说明
2008/10/26 Javascript
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
浅析Jquery操作select
2016/12/13 Javascript
用原生js做单页应用
2017/01/17 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
python获取本机所有IP地址的方法
2018/12/26 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
公司优秀员工获奖感言
2014/08/14 职场文书
接待员岗位职责
2015/02/13 职场文书
限期整改通知书
2015/04/22 职场文书
单位接收证明格式
2015/06/18 职场文书
董事会决议范本
2015/07/01 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python