2012-08-16 20 views
7

quiero redirigir a una página y luego mostrar un mensaje:php redirigir a la página con el mensaje

lo que tengo es:

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

en la página de índice que tengo:

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

La función de redirección está funcionando bien:

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

Pero no mostrará mi mensaje. Esta vacio.

Respuesta

16

En el momento en que ocurre la redirección y se ejecuta la secuencia de comandos php representada por $location, la variable $message desapareció hace mucho tiempo.

Para hacer frente a esto, es necesario para pasar su mensaje en el encabezado de ubicación, utilizando GET variables:

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

Y

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

También podría tener una mirada en sessions

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

continuación, en el guión de destino:

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

Entiendo ahora. Gracias por tu ayuda. – user1386906

+0

si no desea que sus mensajes se muestren en la barra de direcciones, usar sesiones será una buena alternativa, escriba su mensaje en la sesión, por ejemplo $ _SESSION ['message'] = "algún mensaje" después de mostrarlo, desactívelo ($ _SESSION ['mensaje']); – alpera

3

Las variables dejan de existir después de que termina el script. Cada solicitud por separado, cada invocación de script PHP por separado es un contexto completamente nuevo sin datos de ninguna otra invocación.

Usa sessions para conservar los datos.

3

usted puede utilizar sesiones

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

y sobre el índice

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

Dado que se están ejecutando header("Location: {$location}"); el valor de $location (ajustado en el primer archivo) se pierde cuando se carga index.php.

1

utilizar el siguiente código ....

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

en index.php

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

puede evitar la función de redirección y utilizar este código en la página de índice

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

.php

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