2012-08-16 10 views
7

i auf eine Seite umgeleitet werden soll und dann eine Meldung angezeigt:php Seite mit Nachricht umleiten

, was ich habe, ist:

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

auf der Indexseite i haben:

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

Die Umleitungsfunktion funktioniert gut:

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

Aber es wird meine Nachricht nicht angezeigt. Es ist leer.

Antwort

16

Bis die Umleitung passiert und das PHP-Skript von $location ausgeführt wird, $message Variable wäre längst weg.

Um dies zu bewältigen, müssen Sie Ihre Nachricht in Ihrem Standort Header passieren, mit GET Variable:

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

Und

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

Sie könnten auch einen Blick in sessions

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

dann im Ziel Skript:

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

Ich verstehe jetzt. Danke für Ihre Hilfe. – user1386906

+0

Wenn Sie nicht möchten, dass Ihre Nachrichten in der Adressleiste angezeigt werden, ist die Verwendung von Sitzungen eine gute Alternative. Sie schreiben Ihre Nachricht in die Sitzung, zum Beispiel $ _SESSION ['message'] = "Nachricht" nach dem Anzeigen der Nachricht. $ _SESSION ['Nachricht']); – alpera

3

Variablen werden nicht mehr angezeigt, nachdem das Skript beendet wurde. Jede separate Anfrage, jeder separate PHP-Skriptaufruf ist ein völlig neuer Kontext ohne Daten von irgendeinem anderen Aufruf.

Verwenden Sie sessions, um Daten zu persistieren.

3

können Sie verwenden, um Sitzungen

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

und auf Index

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

Da Sie header("Location: {$location}"); den Wert $location (Satz in der ersten Datei ausgeführt werden) ist verloren, wenn index.php geladen ist.

1

den folgenden Code verwenden ....

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

in index.php

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

Sie Redirect-Funktion vermeiden und verwenden Sie diesen Code auf der Seite

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

Index .php

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