Search code examples
phphttp-redirectmessage

Redirect to another page with a message


I want to redirect to a page and then display a message:

What I have is:

//succes            
$message = 'succes';
redirect_to('index.php');

On the index page I have:

if (!empty($message)) {
    echo '<p class="message"> '.$message.'</p>';
}

The redirect function is working fine:

function redirect_to( $location = NULL ) {
    if ($location != NULL) {
        header("Location: {$location}");
        exit;
    }
}

But it won't display my message. It's empty.


Solution

  • By the time the redirect happens and the PHP script depicted by $location is executed, $message variable would have been long gone.

    To tackle this, you need to pass your message in your location header, using GET variable:

    header("Location: $location?message=success");

    And

    if(!empty($_GET['message'])) {
        $message = $_GET['message'];
    // rest of your code
    

    You could also have a look into sessions

    session_start();
    $_SESSION['message'] = 'success';
    header("Location: $location");
    

    then in the destination script:

    session_start();
    if(!empty($_SESSION['message'])) {
       $message = $_SESSION['message'];
       // rest of your code