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 相关文章推荐
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
解析php中curl_multi的应用
Jul 17 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
php提供实现反射的方法和实例代码
Sep 17 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python中is和==的区别详解
2018/11/15 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
浅析Python 序列化与反序列化
2020/08/05 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
化妆品活动策划方案
2014/05/23 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS