1

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?

2
  • 1
    Could you show your page flow? Commented Sep 21, 2011 at 9:51
  • well...i have some file inclusion for my classes => session_start() => printFlash()....than i have a call to a function that edit a record in the db and if ok => setFlash("Flash Message") => redirect to another page with the same classes inclusion => session_start() => printFlash....the problem is that seems that the unset statement is done before than echo statement Commented Sep 21, 2011 at 10:28

1 Answer 1

0

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)

Sign up to request clarification or add additional context in comments.

3 Comments

print 'flash' but at the biginning is empty | unset flash | set 'flash' | => redirect to new page | print flash | unset flash |
So it's seems right, since we had no code to work with, possible errors are: Next page haven't session_start(); -- Session is destroy before the next page
the second page have session_start on the top and if i remove "unset" from the "printFlash" function the second page print the message

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.