user1386906
user1386906

Reputation: 1179

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.

Upvotes: 14

Views: 56237

Answers (6)

Mihai Iorga
Mihai Iorga

Reputation: 39704

You can use sessions

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

And on index

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

Upvotes: 4

Andreas Wong
Andreas Wong

Reputation: 60536

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

Upvotes: 32

Snake Plissken
Snake Plissken

Reputation: 21

you can avoid redirect function and use this code in the page

header("Location: $locationpage?message=success")

index.php

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

Upvotes: 2

Anoop
Anoop

Reputation: 993

use the following code....

header("Location: index.php?message=success");

in index.php

$msg=$_GET['message'];
echo $msg;

Upvotes: 1

Jocelyn
Jocelyn

Reputation: 11393

Since you are running header("Location: {$location}"); the value of $location (set in the first file) is lost when index.php is loaded.

Upvotes: 2

deceze
deceze

Reputation: 522145

Variables cease to exist after the script ends. Each separate request, each separate PHP script invocation is an entirely new context with no data from any other invocation.

Use sessions to persist data.

Upvotes: 4

Related Questions