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 09 PHP
PHP has encountered an Access Violation
Jan 15 PHP
15种PHP Encoder的比较
Mar 06 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
php外部执行命令函数用法小结
Oct 11 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 PHP
浅谈PHP匿名函数和闭包
Mar 08 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个人网站架设连环讲(二)
2006/10/09 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
js no-repeat写法 背景不重复
2009/03/18 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
js中this的用法实例分析
2015/01/10 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
学习python的前途 python挣钱
2019/02/27 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
课程设计心得体会
2013/12/28 职场文书
创新比赛获奖感言
2014/02/13 职场文书
房产转让协议书
2014/04/11 职场文书
与美同行演讲稿
2014/09/13 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android