2012-08-16 9 views
7

chcę przekierować do strony, a następnie wyświetla komunikat:php przekierowanie do strony z komunikatem

co mam to:

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

na stronie indeksu mam:

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

Funkcja przekierowania działa poprawnie:

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

Ale nie wyświetli mojej wiadomości. To jest puste.

Odpowiedz

16

Do czasu, gdy nastąpi przekierowanie i skrypt php przedstawiony przez $location zostanie wykonany, zmienna $message dawno minie.

Do tego narzędzia, trzeba przekazać wiadomość w nagłówku lokalizacji, używając GET zmiennej:

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

I

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

Można również zajrzeć do sessions

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

następnie w skrypcie docelowy:

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

Teraz rozumiem. dziękuję za pomoc. – user1386906

+0

jeśli nie chcesz, aby twoje wiadomości były wyświetlane na pasku adresu, używanie sesji będzie dobrą alternatywą, możesz napisać wiadomość do sesji, na przykład $ _SESSION ['message'] = "wiadomość" po pokazaniu jej rozbrojenia, $ _SESSION ['message']); – alpera

3

Zmienne przestają istnieć po zakończeniu skryptu. Każde oddzielne żądanie, każde oddzielne wywołanie skryptu PHP jest całkowicie nowym kontekstem bez danych z innych inwokacji.

Użyj opcji sessions, aby utrwalić dane.

3

można użyć sesje

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

i na indeksie

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

Ponieważ używasz header("Location: {$location}"); wartość $location (zestaw w pierwszym pliku) jest tracone po załadowaniu pliku index.php.

1

użyć następującego kodu ....

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

w index.php

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

można uniknąć funkcję przekierowania i wykorzystać ten kod na stronie

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

indeksu .php

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