2012-08-16 109 views
7

我想重定向到一個頁面,然後顯示一個消息:PHP重定向到頁面,消息

我有什麼是:

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; 
     } 
    } 

但它不會顯示我的消息。它是空的。

回答

16

當重定向發生時,執行$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['messsage'])) { 
    $message = $_SESSION['message']; 
    // rest of your code 
+0

我現在明白了。感謝您的幫助。 – user1386906 2012-08-16 13:25:42

+0

如果你不希望你的消息顯示在地址欄上,使用會話將是一個很好的選擇,你寫你的消息會話,例如$ _SESSION ['消息'] =「一些消息」後顯示它未設置未設置$ _SESSION [ '消息']); – alpera 2012-08-16 13:31:40

3

腳本結束後,變量將不復存在。每個單獨的請求,每個獨立的PHP腳本調用都是一個全新的上下文,沒有任何其他調用的數據。

使用sessions來保存數據。

3

可以使用,因爲你正在運行header("Location: {$location}");會議

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']); 
} 
2

$location(一組在第一文件中的值)在加載index.php時會丟失。

1

使用下面的代碼....

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

的index.php中

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

你能避免重定向功能,並在頁面

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

指數使用此代碼.php

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