Lição 12: Sessão

Quando você visita um site você realiza uma série de ações. Navega de uma página a outra. Talvez você preencha um formulário ou compre um produto.

Como desenvolvedor essas informações são de grande valia para criação de um site de sucesso.

Suponha que você necessita criar um site no qual algumas páginas serão de acesso restrito requerendo login e senha. Para que a proteção ao acesso seja efetiva as páginas restritas devem possuir mecanismos capazes de detectar se o usuário está logado. Em outras palavras, quando o usuário requisita uma nova página do site é preciso "lembrar" o que ele fez anteriormente.

É exatamente para isto que as sessões se prestam - como usar a funcionalidade sessions do PHP para armazenar e recuperar informações sobre um usuário em visita ao site.

Session

As documentaçãosession do PHP permitem gerenciar informações colhidas durante uma sessão (estada no site) do usuário. Você pode escrever aplicações inteligentes com uso de armazenagem e recuperação de informações sobre o usuário.

Uma sessão pode começar de diferentes maneiras. Não iremos nos ater a detalhes técnicos e focaremos no caso em que uma sessão começa com o armazenamento de um valor. Uma sessão ends/dies (termina/morre) se o usuário não requisitar nenhuma página após decorridos um determinado tempo (por padrão 20 minutos). Obviamente, no seu script, você pode terminar uma sessão a qualquer momento.

Suponha que 50 pessoas estão visitando o site ao mesmo tempo, por exemplo, em um site de vendas. As informações sobre quais itens cada uma delas incluiu na sua cesta de compras são um bom exemplo de armazenamento com uso de session. Para identificar cada um dos usuário o servidor usa um ID único armazenado em um cookie. Cookie é um pequeno arquivo de texto armazenado no computador do usuário (saiba mais sobre cookies na lição 13). Assim, sessions requerem suporte a cookies no navegador do usuário.

Exemplo de uso de sessions

Quando você requisitou esta página eu armazenei a hora em uma session. Eu fiz isto para mostrar a você como funciona uma sessão.

Eu criei um item de nome "StartTime" e armazenei ele usando o seguinte trecho de script PHP:


	<?php

	session_start();
	$_SESSION["StartTime"] = date("r");

	?>
	
	

Desta forma uma sessão foi iniciada. Como foi dito anteriormente um ID é criado pelo servidor para cada sessão.

A sua sessão tem o seguinte ID: f7orls1iqkjsnbmgg2a4o5itn2

A qualquer momento eu posso chamar "StartTime" da sessão escrevendo o seguinte:


	<?php

	session_start();
	echo $_SESSION["StartTime"];

	?>
	
	

Isto vai me mostrar que a página foi por você requisitada em Sat, 27 Jul 2024 04:35:37 +0000 (de acordo com o relógio do meu servidor).

O mais interessante é que esta informação permanece armazenada e disponível em session até mesmo depois que você sai desta página. A informação permanece até que a seesão termine.

por pdrão, uma sessão permanece ativa até que o usuário feche o navegador. Nesta ocasião ela termina. Se você quiser terminar uma sessão antes disto a sintaxe é como mostrada a seguir:


	<?php

	session_destroy();

	?>
	
	

Vamos examinar outro exemplo de aplicação para sessão: uso de senha.

Sistema de login com uso de sessão

No exemplo a seguir iremos criar um sistema simples de login. Usaremos muitos dos conceitos que aprendemos até aqui.

Precisamos de um formulário para coletar login e senha do usuário. Observe a seguir:


	<html>
	<head>
	<title>Login</title>

	</head>
	<body>
	<form method="post" action="login.php">

	<p>Usuário: <input type="text" name="username" /></p>
	<p>Senha: <input type="text" name="password" /></p>

	<p><input type="submit" value="Login" /></p>

	</form>
	</body>
	</html>

	
	

A seguir criamos um arquivo denominado: login.php.

Neste arquivo o script verifica se o login e senha fornecidos no formulário estão corretos. Se estiverem, iniciamos uma sessão informando que o usuário está logado com um login e senha correta.

	<html>

	<head>
	<title>Login</title>

	</head>
	<body>
	
	<?php

	// Verifica se usuário e senha conferem
	if ($_POST["username"] == "php" && $_POST["password"] == "php") {
	 
	// Se usuário e senha conferir definimos session para YES
	  session_start();
	  $_SESSION["Login"] = "YES";
	  echo "<h1>Você está logado</h1>";
	  echo "<p><a href='document.php'>Link para o arquivo restrito</a><p/>";
	 
	}
	else {
	 
	// Se usuário e senha conferir definimos session para NO
	  session_start();
	  $_SESSION["Login"] = "NO";
	  echo "<h1>Você NÃO está logdo</h1>";
	  echo "<p><a href='document.php'>Link para o arquivo restrito</a><p/>";
	 
	}

	?>

	</body>
	</html>

	
	

Nas páginas de acesso restrito precisamos verificar se o usuário que as requisitou está logado corretamente. Se não estiver ele é enviado para a página de login. Observe como é feito o script de proteção das páginas:


	<?php

	// Iniciar Session PHP 
	session_start();

	// Se o usuário não estiver logado manda ele para o formulário de login
	if ($_SESSION["Login"] != "YES") {
	  header("Location: form.php");
	}

	?>

	<html>
	<head>
	<title>Login</title>
	</head>

	<body>
	<h1>Este é um documento de acesso restrito</h1>

	<p>Acesso permitido somente para usuários logados.</p>
	</body>
	</html>
	
	

Agora você já conhece o objeto Session do PHP. Na próxima lição nós continuaremos nesta área estudando os cookies.



<< Lição 11: Passando variáveis de um formulário

Lição 13: Cookies >>