php / html - HTTP_REFERER
-
03-07-2019 - |
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?
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 .