未设置时的php会话变量问题

i have made a function to set a session variable $_SESSION['flash'] in order to store a message between page

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;   
}

and a function to print this message

function printFlash() {
      echo $_SESSION['flash'];
      unset($_SESSION['flash']);

}

i call this function at the top of every page (naturally after session_start)

the problem is that it doesn't print nothing, but if I comment " unset($_SESSION['flash']);" it prints the message in every page.

how can i solve?


Solved sorry my fault.

my page is something like this

include "func.inc.php"
session start

function editSomething {
  that call setFlash()
  }

include "template.php" (where printFlash() is called)

now i put printFlash directly in my page and works..bah strange...what's my mistake?

On every page this is what happened:

  • Make a session
  • Display flash
  • Delete flash
  • Create 'flash' with value

You have to move Create before display.

(it's also not very usefull because you do not transmit 'flash' (it's delete right after been created)