Reputation: 1179
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
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
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
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
Reputation: 993
use the following code....
header("Location: index.php?message=success");
in index.php
$msg=$_GET['message'];
echo $msg;
Upvotes: 1
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