Trabalhando com sessão de usuário

Pequeno snippet feito em PHP para facilitar o trabalho com sessão de usuário, este script gera uma session com índices contendo tempo e informações do usuário ao logar no site.


//PREVENÇÂO DE CACHE
ob_start();
 
// INICIA A SESSAO
session_start();

// PREVINE ERRO DE ACENTUAÇÂO
echo'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';

// VERIFICA SE OS DADOS DO FORMULARIO EXISTE
if(isset($_POST['sendform'])){
	
	// DEFINE OS INDICE DA SESSÂO 'user'
	$ses['id']		= session_id(); // id da sessão
	$ses['on']		= time(); // pega a hora exata
	$ses['end']		= time() + 30; // adiciona tempo a sessão
	$ses['ip']		= $_SERVER["REMOTE_ADDR"]; // pega ip do usuario
	$ses['nome']	= $_POST['nome'];// nome do usuario
	
	// CRIA A SESSION['user'] E REDIRECIONA
	$_SESSION['user'] = $ses;
	header('Location:'.$_SERVER['PHP_SELF']);
}

// MATA A SESSÂO ATRAVEZ DO LINK
if(!empty($_GET['acao']) && $_GET['acao'] == 'sair'){
	unset($_SESSION['user']); // mata a sessão
	header('Location:'.$_SERVER['PHP_SELF']);
}

// CASO A SESSÂO NÂO EXISTA MOSTRA O FORMULARIO
if(empty($_SESSION['user'])){
	echo'
	<form name="form" action="" method="post">
		Nome:
		<input type="text" name="nome">
		<input type="submit" value="iniciar sessão" name="sendform">
	</form>	
	';
}else{
	
	$tempoLog = $_SESSION['user']['on']; // pega a hora em queo usuario logou
	$tempoAgg = time();// pega o tempo real
	$tempoOnn = $tempoAgg - $tempoLog;// tempo em que o usuario esta logado
	$tempoFim = $_SESSION['user']['end'] - $tempoAgg;// tempo para expirar a sessão
	
	// CONTA SEGUNDOS
	echo'Olá '.$_SESSION['user']['nome'].' você esta logado à '.$tempoOnn.' segundos e seu ip é: '.$_SESSION['user']['ip'].'<br />';
	
	// CONTA MINUTOS USANDO 'round();'
	//echo'Olá '.$_SESSION['user']['nome'].' você esta logado à '.round($tempoOnn/60).' minutos';
	
	
	if($tempoFim <= 0){
		unset($_SESSION['user']);
		header('Refresh: 5;url='.$_SERVER['PHP_SELF']);
		echo'Sua sessao expirou, você sera redirecionado em 5 segundos!';
	}else{
		$_SESSION['user']['end'] = time() + 30;
		//echo'sua sessão expira em '.round($tempoFim/60).' minutos';
		echo'sua sessão expira em '.$tempoFim.' segundos';
		echo'<br /><hr />';
		echo'<a href="?acao=sair">Sair</a>';
	}
	
}

// DEBUG
echo '<hr /><pre>'; print_r($_SESSION); echo'</pre>';
ob_end_flush();


Anúncios