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 相关文章推荐
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
php去除换行(回车换行)的三种方法
Mar 26 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 PHP
详解使用php-cs-fixer格式化代码
Sep 16 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
用Flash图形化数据(一)
2006/10/09 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python标准库os.path包、glob包使用实例
2014/11/25 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python字典底层实现原理详解
2019/12/18 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
教育孩子心得体会
2014/01/01 职场文书
初二生物教学反思
2014/02/03 职场文书
小学三年级学生评语
2014/04/22 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
Python如何加载模型并查看网络
2022/07/15 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL