¿Obtener referencia de URL original con PHP?


110

Estoy usando $_SERVER['HTTP_REFERER'];para obtener la URL de referencia. Funciona como se esperaba hasta que el usuario hace clic en otra página y el remitente cambia a la última página.

¿Cómo almaceno la URL de referencia original?

Respuestas:


137

Guárdelo en una cookie (si es aceptable para su situación) o en una variable de sesión.

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
¡Tenga en cuenta el consejo de @pcp en la respuesta a continuación!
d -_- b

6
Tenga en cuenta que también debe verificar si http_refererexiste, ya que a menudo no lo hace, lo que podría causar un error de "Índice no definido".
Justin

17

Como sugirió Johnathan, querrá guardarlo en una cookie o en una sesión.

La forma más sencilla sería utilizar una variable de sesión.

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

Ponlo en la parte superior de la página, y siempre podrás acceder al primer referente por el que se dirigió el visitante del sitio.


4

Almacenarlo en una cookie que solo dura la sesión de navegación actual


4

Usar Cookie como un repositorio de la página de referencia es mucho mejor en la mayoría de los casos, ya que las cookies mantendrán la referencia hasta que se cierre el navegador (y la mantendrán incluso si la pestaña del navegador está cerrada), así que en caso de que el usuario dejara la página abierta, digamos antes de los fines de semana y después de un par de días, su sesión probablemente caducará, pero las cookies seguirán allí.

Coloque ese código al comienzo de una página (antes de cualquier salida html, ya que las cookies se configurarán correctamente solo antes de cualquier eco / impresión):

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

Entonces puedes acceder a él más tarde:

$var = $_COOKIE['origin_ref'];

Y además de lo que @pcp sugirió sobre cómo escapar de $ _SERVER ['HTTP_REFERER'], cuando use cookies, también puede querer escapar de $ _COOKIE ['origin_ref'] en cada solicitud.


-4

prueba esto

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

Se trata de obtener, IP ADDRESSpero la publicación trata de REFERERla página web que condujo a la en cuestión.
Sanxofon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.