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中break及continue两个流程控制指令区别分析
Apr 18 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
php如何把表单内容提交到数据库
Jul 08 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
PHP实现简单注册登录系统
Dec 28 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绘制饼状图的实现代码
2013/06/07 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
PHP安全上传图片的方法
2015/03/21 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
Js切换功能的简单方法
2010/11/23 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
python学习数据结构实例代码
2015/05/11 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python enumerate内置库用法解析
2020/02/24 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
django 读取图片到页面实例
2020/03/27 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
Python logging模块原理解析及应用
2020/08/13 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
小学运动会班级口号
2014/06/09 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
阿里云日志过滤器配置日志服务
2022/04/09 Servers