Pergunta

Estou criando um site e em uma página particular, estou querendo enviar a volta usuário para a página anterior. Eu sou bastante novo para PHP / HTML e têm vindo a utilizar algum código existente para idéias e ajuda.

O código existente usa o seguinte método:

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

No entanto, quando eu uso este código a HTTP_Referer é sempre tratado como vazio e o usuário redirecionado para a página raiz. Quaisquer falhas óbvias neste código?

Foi útil?

Solução

Você precisa usar:

$_SERVER['HTTP_REFERER']

Outras dicas

Não confie no ser um campo HTTP Referente válido ou até mesmo não-vazia. As pessoas podem optar por não ter este conjunto deixando todas as verificações para essa variável vai para o lado vazio da cláusula IF-ELSE.

Você pode se proteger contra isso enviando ao longo de um parâmetro o URL ou parâmetros POST que iria realizar um valor que você pode usar para redirecionar o usuário para trás.

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

Se você quiser enviar a pessoa de volta para a página anterior e tê-lo trabalhar, independentemente do referencial sendo definida corretamente, você pode acrescentar um parâmetro GET para o URL (ou POST) .. você vai precisar para codificar o URL. . Algo como

http://www.domain.com.au/script.php?return=http%3a%2f%2fwww.domain.com.au%2fthis-is-where-i-was % 2f

Você pode usar a função urlencode() do PHP.

Além disso, note que o cabeçalho de referência pode estar vazio ou ausente de qualquer maneira, então você não deve contar com ele em todos ..

Você deve usar

$_SERVER['HTTP_REFERER']

No entanto olhar para a configuração register_globals no php.ini, deve ser desligado devido a razões de segurança. Você pode ler mais sobre PHP Manual do local .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top