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中函数内引用全局变量的方法
Oct 20 PHP
php判断变量类型常用方法
Apr 24 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php生成rss类用法实例
Apr 14 PHP
浅谈php错误提示及查错方法
Jul 14 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
Yii CGridView用法实例详解
Jul 12 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
Laravel数据库读写分离配置的方法
Oct 13 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 inc文件使用的风险和注意事项
2013/11/12 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python pdb调试方法分享
2014/01/21 Python
Python socket编程实例详解
2015/05/27 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python subprocess模块详细解读
2018/01/29 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Flask之请求钩子的实现
2018/12/23 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Python while true实现爬虫定时任务
2020/06/08 Python
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
论文诚信承诺书
2014/05/23 职场文书
机械工程师岗位职责
2014/06/16 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
车间统计员岗位职责
2015/04/14 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
css3 选择器
2022/05/11 HTML / CSS
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS