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制作的意见反馈表源码
Mar 11 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
PHP下常用正则表达式整理
Oct 26 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
ThinkPHP中session函数详解
Sep 14 PHP
Laravel框架中Blade模板的用法示例
Aug 30 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原理之异常机制深入分析
2010/08/08 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
php实现微信支付之企业付款
2018/05/30 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
Vue.use源码分析
2017/04/22 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
详解Python中的分支和循环结构
2020/02/11 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
新郎新娘婚礼答谢词
2014/01/11 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python