php重定向到带有消息的页面

时间:2012-08-16 13:19:19

标签: php redirect message

我想重定向到某个页面,然后显示一条消息:

我拥有的是:

if (mysqli_affected_rows($link) == 1) 
{
   //succes         
    $message = 'succes';
    redirect_to('index.php');
}

在索引页面上我有:

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

重定向功能正常运行:

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

但它不会显示我的信息。它是空的。

6 个答案:

答案 0 :(得分:19)

当重定向发生并执行$location描述的PHP脚本时,$message变量早就不存在了。

要解决此问题,您需要使用GET变量在您的位置标头中传递消息:

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

并且

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

您还可以查看sessions

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

然后在目标脚本中:

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

答案 1 :(得分:3)

脚本结束后,变量不再存在。每个单独的请求,每个单独的PHP脚本调用都是一个全新的上下文,没有来自任何其他调用的数据。

使用sessions来保存数据。

答案 2 :(得分:3)

你可以使用会话

if (mysqli_affected_rows($link) == 1) 
{
   //succes         
    $_SESSION['message'] = 'succes';
    redirect_to('index.php');
}

和索引

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

答案 3 :(得分:2)

由于您正在运行header("Location: {$location}");,因此在加载index.php时,$location(在第一个文件中设置)的值将丢失。

答案 4 :(得分:1)

使用以下代码....

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

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

答案 5 :(得分:0)

您可以避免重定向功能并在页面中使用此代码

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

的index.php

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