【问题标题】:php session variable problem when unset未设置时的php会话变量问题
【发布时间】: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 语句之前完成

标签: php session-variables unset


【解决方案1】:

在每一页上都发生了这样的事情:

  • 进行会话
  • 显示闪光灯
  • 删除闪存
  • 用价值创造'flash'

你必须在显示之前移动创建。

(它也不是很有用,因为你不传输'flash'(它在创建后立即删除)

【讨论】:

  • 打印'flash'但在biginning是空的|未设置闪光灯 |设置'闪光' | => 重定向到新页面 |打印闪存 |取消闪光 |
  • 所以看起来是对的,因为我们没有代码可以使用,可能的错误是:下一页没有 session_start(); -- 会话在下一页之前被销毁
  • 第二页顶部有 session_start,如果我从“printFlash”功能中删除“未设置”,第二页打印消息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多