A melhor hospedagem para o seu site! mais detalhes


Identificar refresh ou novo acesso com PHP

http://www.codigosnaweb.com/forum/Identificar-refresh-ou-novo-acesso-com-PHP_15_5454.html

Aqui você verá artigos sobre PHP

Moderador: web 9145

Postar
responder 

tópico Identificar refresh ou novo acesso com PHP

Mensagem por web 9145 em 07 Jul 2010 09:57 pm

Tentando achar uma forma encerrar uma session assim que o usuário feche o navegador, pensei em uma forma usando o HTTP_REFERER

A ideia é bem simples. Quando o usuário logar, ele vai clicar em um link para acessar um painel de controle por exemplo: painel.php, toda a navegação a partir daí vai gerar um valor que pode ser capturado pelo $_SERVER['HTTP_REFERER'], esse valor seria a URL que mandou o usuário para o documento atual.

Imagine que existe um documento chamado validacao.php, com um link para teste.php, que vemos abaixo

<?php
// iniciando a session
session_start();

// aqui é simulado a criação da session
// que geralmente é criada após a validação dos dados do formulário
// nesse teste, criamos quando clicamos no link
if($_GET['criar']) {
$_SESSION['navegacao'] = session_id();
}

// pegamos a referência, de onde o usuário veio
$referencia = $_SERVER['HTTP_REFERER'];

// verificamos se existe alguma referência e se a session está criada
if(isset($referencia) && isset($_SESSION['navegacao'])==session_id()) {
echo "navegando internamente"; // se sim, navega-se novamente
} else {
echo "log-se"; // caso não, pede-se para logar
session_destroy(); // também destruímos a session
}
?>
<a href="teste.php?criar=session">CRIAR SESSION</a>

<a href="teste.php">teste</a>
<a href="teste2.php">teste2</a>

Note que quando o usuário chegar a esse documento, vai armazenar em $referencia o valor referente a http://www.seusite.com/validacao.php, que é o link de onde ele veio, referência.

Logo após armazenar, é usado um if para verificar se o usuário veio de alguma referência, se sim, informa que está navegando internamente, caso contrário, pede para logar-se.

Note que tem um link para teste2.php, faça uma cópia do teste só para que você simule uma navegação entre esses 2 arquivos.

Você irá notar que você pode navegar ou dar refresh, que o REFERER não é perdido. Mas, se você fechar a janela e abrir novamente, irá pedir para logar-se.



responder
relacionados fechar
Carregando...

Retornar para PHP - Artigos


Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes