2009-03-03 23 views
6

Estoy creando un sitio web y en una página en particular, quiero enviar al usuario a la página anterior. Soy bastante nuevo en PHP/HTML y he estado usando algún código existente para obtener ideas y ayuda.php/html - http_referer

El código existente utiliza el siguiente método:

if (! empty($HTTP_REFERER)) 
{ 
    header("Location: $HTTP_REFERER"); 
} else 
{ 
    header("Location: $CFG->wwwroot"); 
} 

Sin embargo, cuando se utiliza el código de la HTTP_REFERER siempre es tratado como vacío y el usuario redirigido a la página raíz. ¿Alguna falla obvia en este código?

Respuesta

13

Es necesario utilizar:

$_SERVER['HTTP_REFERER'] 
0

También tenga en cuenta que la cabecera árbitro podría ser vacío o falta de todos modos, por lo que no se debe confiar en él en absoluto ..

14

No confíe en el HTTP Referrer es un campo válido o incluso no vacío. Las personas pueden optar por no tener este conjunto dejando comprobaciones para que esa variable vaya al lado vacío de la cláusula IF-ELSE.

Puede evitar esto enviando un parámetro en los parámetros URL o POST que contendría un valor que puede usar para redirigir al usuario de nuevo.

+3

+1. Las referencias son intrínsecamente poco confiables. Use un parámetro para dirigir al usuario a donde quiere que vaya después del formulario. – bobince

0

Debe utilizar

$_SERVER['HTTP_REFERER'] 

Sin embargo mirar a la configuración register_globals en php.ini, debería ser desactivado por razones de seguridad. Puede leer más en PHP Manual site.

1

isset ($ _ SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']: '';

Cuestiones relacionadas