未设置时的php会话变量问题
Posted
技术标签:
【中文标题】未设置时的php会话变量问题【英文标题】:php session variable problem when unset 【发布时间】:2011-11-21 19:15:23 【问题描述】:我已经创建了一个函数来设置会话变量 $_SESSION['flash'] 以便在页面之间存储消息
function setFlash($string,$type="info")
switch ($type)
case "warning":
$_SESSION['flashtype'] = "warning";
break;
case "error":
$_SESSION['flashtype'] = "error";
break;
case "info":
$_SESSION['flashtype'] = "info";
break;
default:
$_SESSION['flashtype'] = "info";
break;
$_SESSION['flash'] = $string;
以及打印此消息的函数
function printFlash()
echo $_SESSION['flash'];
unset($_SESSION['flash']);
我在每个页面的顶部调用这个函数(当然是在 session_start 之后)
问题是它什么也不打印,但如果我评论“unset($_SESSION['flash']);”它在每一页打印消息。
我该如何解决?
解决了我的错。
my page is something like this
include "func.inc.php"
session start
function editSomething
that call setFlash()
include "template.php" (where printFlash() is called)
现在我将 printFlash 直接放在我的页面中并且可以正常工作..bah 奇怪...我的错误是什么?
【问题讨论】:
你能展示你的页面流程吗? 好吧...我的课程包含一些文件 => session_start() => printFlash()....然后我调用了一个在数据库中编辑记录的函数和if ok => setFlash("Flash Message") => 重定向到包含相同类的另一个页面 => session_start() => printFlash ....问题是似乎 unset 语句在 echo 语句之前完成 【参考方案1】:在每一页上都发生了这样的事情:
进行会话 显示闪光灯 删除闪存 用价值创造'flash'你必须在显示之前移动创建。
(它也不是很有用,因为你不传输'flash'(它在创建后立即删除)
【讨论】:
打印'flash'但在biginning是空的|未设置闪光灯 |设置'闪光' | => 重定向到新页面 |打印闪存 |取消闪光 | 所以看起来是对的,因为我们没有代码可以使用,可能的错误是:下一页没有 session_start(); -- 会话在下一页之前被销毁 第二页顶部有 session_start,如果我从“printFlash”功能中删除“未设置”,第二页打印消息以上是关于未设置时的php会话变量问题的主要内容,如果未能解决你的问题,请参考以下文章