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 操作符与控制结构
Mar 07 PHP
php适配器模式介绍
Aug 14 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
php连接oracle数据库的核心步骤
May 26 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
PHP实现的装箱算法示例
Jun 23 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
xml和web特殊字符
2009/04/28 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
python实现图像识别功能
2018/01/29 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
信息管理专业推荐信
2013/10/29 职场文书
兼职学生的自我评价
2013/11/24 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
班主任对学生的评语
2014/04/26 职场文书
预备党员转正考核材料
2014/06/03 职场文书
承诺函格式模板
2015/01/21 职场文书
会议欢迎词范文
2015/01/27 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
小学运动会加油稿
2015/07/22 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS
原生JS实现分页
2022/04/19 Javascript