Pergunta

Eu estou usando $_SERVER['HTTP_REFERER']; para obter o referer Url. Ele funciona como esperado até que o usuário clica em outra página e o referer muda para a última página.

Como faço para armazenar o original referindo Url?

Foi útil?

Solução

loja que quer em um cookie (se é aceitável para a sua situação), ou em uma variável de sessão.

session_start();

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

Outras dicas

Como Johnathan sugerida, você quer quer salvá-lo em um cookie ou uma sessão.

A maneira mais fácil seria usar uma variável de sessão.

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

Coloque isso no topo da página, e você sempre será capaz de acessar a primeira referer que o visitante do site foi dirigido por.

Guarde-o em um cookie que dura apenas para a actual sessão de navegação

Usando cookie como um repositório de página de referência é muito melhor na maioria dos casos, os cookies vai manter de referência até que o navegador for fechado (e vai mantê-lo mesmo se aba do navegador é fechado), de modo que no caso se o usuário deixou o aberto página , vamos dizer antes de finais de semana, e voltou a ele depois de um par de dias, a sua sessão provavelmente será expirado, mas os cookies ainda estarão lá.

Coloque esse código no início de uma página (antes de qualquer saída html, como os cookies serão devidamente definido apenas antes de qualquer eco / imprimir):

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

Em seguida, você pode acessá-lo mais tarde:

$var = $_COOKIE['origin_ref'];

E para além do que @pcp sugerido de cerca de escapar $ _SERVER [ 'HTTP_REFERER'], quando se utiliza cookie, você também pode querer escapar $ _COOKIE [ 'origin_ref'] em cada solicitação.

Tente este

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top