热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHPSession使用详解及实例

ThinkPHP封装了Session类,可以直接使用。常用的方法有
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 例子:




  1. class UserAction extends Action{
  2. public function session(){
  3. if(!emptyempty($_POST['username'])){
  4. Session::set('username',$_POST['username']);
  5. }
  6. $this->display();
  7. }
  8. }

sessionTest.html 模板(片段):





  1. {$_SESSION['username']} 你好!
  2. 首页
  3. 本模块其他页面
  4. 注销
  5. 请输入您的用户名:






当填入用户名(如 testuser
),点击 提交 按钮后,提交至 sessionTest 方法(即当前页面)处理并注册 session 值。以模板标签 present
来控制输出逻辑,检测到已经注册 $_SESSION['username'] 变量即输出:

testuser 你好! 首页
注销

否则会输出表单。
检测 session 是否注册
模板里检测

在模板里面,可以直接使用 present 或
notempty 甚至 switch 等标签判断 session 变量是否注册,以决定输出对应的 session 值(直接以输出数组单元的方式输出
session 变量值)或显示其他页面元素。具体可参见本教程模板标签部分内容以及上面的例子。
操作里检测

在操作里,可以使用
Session::is_set 方法检查 Session 的值是否设置,例如 User 模块 user 操作如下:




  1. public function user(){
  2. // 由于直接在操作里输出,为避免乱码
  3. header("Content-Type:text/html; charset=utf-8");

  4. if(Session::is_set('username')){
  5. echo Session::get('username').' 你好';
  6. }else{
  7. echo 'session 未注册';
  8. }
  9. }

其他模块页面

在其他页面(如
Index/index)里,判断并读取 session 的代码片段:

name="_SESSION['username']">{$_SESSION['username']} 你好!
/>未登录


session 无效(无法传递)

ThinkPHP 中可能出现 session
无效(无法传递至其他页面)的情况,可能的原因如下:

使用 Session
类头字母未大写,如:session::set。
页面有信息输出,如入口文件有空行等。
服务器上(Linux/Unix)的 session
存储路径(session.save_path)权限不正确导致无法将 session
信息正确存储。
作用域问题。

建议

ThinkPHP 的 Session 类只是对 session
做了简单的包装,实际可以在操作中直接使用 PHP 原生的 session 函数,官方亦是如此建议。

参考阅读

PHP session

推荐阅读
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 探索OpenWrt中的LuCI框架
    本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • 利用Docker部署JupyterHub以支持Python协同开发
    本文介绍了如何通过Docker容器化技术安装和配置JupyterHub,以实现多用户的Python开发环境,特别适合团队协作场景。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 使用REM和媒体查询实现响应式布局
    本文介绍如何利用REM单位和媒体查询(Media Queries)来创建适应不同屏幕尺寸的网页布局。通过具体示例,展示在不同屏幕宽度下如何调整页面元素的样式。 ... [详细]
  • SPFA算法详解与应用
    当图中包含负权边时,传统的最短路径算法如Dijkstra不再适用,而Bellman-Ford算法虽然能解决问题,但其时间复杂度过高。SPFA算法作为一种改进的Bellman-Ford算法,能够在多数情况下提供更高效的解决方案。本文将详细介绍SPFA算法的原理、实现步骤及其应用场景。 ... [详细]
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
author-avatar
tttt
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有