2011-11-03 26 views
5

funciona cuando la entrada

header("Location: http://www.google.com"); 

pero no funciona cuando tengo

header("Location: $_SERVER['HTTP_REFERER']"); 

quiero redirigir la página a cualquier página que procede.

+7

No todos los navegadores envían un referidor, y algunos lo hacen, envían datos falsos. Además, no puede usar comillas en una clave de matriz dentro de una cadena de comillas dobles como esa. intente 'header (" Ubicación: {$ _SERVER ['HTTP_REFERER']} ");' en su lugar. –

+1

¿Ha comprobado el contenido de '$ _SERVER ['HTTP_REFERER']'? – PeeHaa

+0

cuál es el resultado de esta cadena: echo "Ubicación: $ _SERVER ['HTTP_REFERER']"; ? –

Respuesta

5

Inténtelo: :)

if (!empty($_SERVER['HTTP_REFERER'])) 
    header("Location: ".$_SERVER['HTTP_REFERER']); 
else 
    echo "No referrer."; 

Sin embargo, para determinar qué página de usuario viene, prefiero usar variable de sesión, que consigue restablecer en cada página:

session_start(); 
echo "Previous page:", $_SESSION['loc']; 
$_SESSION['loc']=$_SERVER['PHP_SELF']; 

ps: Esto solo funciona para páginas locales, no puedes rastrear otros sitios web.

2

Esta es una función de navegador, y cualquier navegador educado enviará el cabecera correcta (aunque varias herramientas de 'seguridad' se anulará este con un árbitro falso).

Es específico del navegador por lo que no todas las combinaciones de software de navegador/seguridad lo enviarán al servidor. Es mejor que el establecimiento de una variable de sesión en cada carga de la página para determinar qué página vino el usuario (o algo similar con un poco más de lógica)

+0

para hacer una sesión de la url actual en cada página? –

4

Usted puede tratar de:

header("Location: {$_SERVER['HTTP_REFERER']}"); 

que he tenido problemas con expresiones variables que contienen comillas en cadenas sin llaves

También debe tener en cuenta que $_SERVER['HTTP_REFERER'] simplemente no se ha configurado. Algunos agentes de usuario no lo configuran, algunas herramientas privadas lo enmascaran y usted necesita manejar a las personas que ingresan a su página sin una referencia.

3

Aquí hay una solución simple. cheque y ver lo $ _SERVER [ 'HTTP_REFERER'] se le está dando y si su conjunto a continuación, puede redirigir y si no poner un repliegue algo URL como:

if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != ""){ 
$url = $_SERVER['HTTP_REFERER']; 
}else{ 
$url = "YOUR INDEX PAGE OR SOMETHING"; 
} 

header("Location: ".$url); 
0

Simplemente puede utilizar

if(isset($_SERVER['HTTP_REFERER'])){ 
    header("Location:".$_SERVER['HTTP_REFERER'].""); 
} 
1
header("Location: $_SERVER[HTTP_REFERER]"); 

Sin las comillas simples. Esta es la forma más rápida de acceder y concatenar valores de matriz sin un código de concatenación adicional.

Cuestiones relacionadas