Antes, uma breve explicação sobre as sessões dos navegadores
Cada vez que você abre seu navegador, é criada uma sessão única, que trata-se de uma string com 32 caracteres, contendo letras e números. Exemplo: d5598f5a83a466e00bd0df58167d1994. As sessões mudam quando você fecha o navegador, mas não quando fecham apenas a página e continua com o navegador aberto, com outras abas.
Aquela linha <? session_start(); ?> que tem no início da página login.php e que também está presente na primeira linha do arquivo sessoes.php são responsáveis por iniciar as sessões.
É importante informar que quando uma sessão é criada, por mais que você entre numa página que tem o código para criá-la novamente, ela não mudará de número. Ou seja, se ela já existe, continua como está. Estas sessões são a base para a autenticação das outras páginas que devem ter acesso restrito.
Criando o arquivo sessoes.php:
Lembra que, quando o usuário faz o login com sucesso, é criado um registro na tabela sessoes, onde são guardados seu login, data, hora e principalmente o número da sessão? Pois estes dados são fundamentais para o acesso às outras páginas. Eles funcionam como uma credencial, ou um crachá que pode ser mostrado em todas as portarias internas e dar-lhe acesso aos setores internos, afinal se "porteiro" o permitiu entrar é porque trata-se de alguém de confiança.
O que este arquivo faz é pegar o número da sessão atual, verificar se existe algum registro no banco de dados referente a ela. Se houver um registro, ele ainda verifica se trata-se de uma sessão ativa ou se já foi encerrada pelo usuário.
Caso a sessão exista e esteja ativa, o php pega apenas duas variáveis chamadas "sessao" e "usuario" que respectivamente levam o número da sessão e o login do usuário que estão na tabela sessoes.
Caso não exista, as variáveis "sessao" ou "usuario" ficarão vazias e o comando "if" destruirá as sessões e jogará o usuário para a tela de login novamente.
Em resumo, este arquivo verifica se há uma sessão dando permissão ao usuário e se não houver ela redireciona-o para a tela de login. Veja o código completo do arquivo sessoes.php.
<? # Inicia uma sessão
session_start();
?>
<? # Pega o número da sessão criada e grava numa variável
$sessid = session_id();
?>
<?
# Inicia uma conexão com o banco de dados
$conexao = mysql_connect('localhost', 'root', 'minhasenha');
mysql_select_db('nome_do_bd', $conexao);
# Faz uma consulta para encontrar registros de sessões ativas (com status ABERTA)
# que coincidam com a sessão atual do usuário.
$consulta = mysql_query("SELECT * FROM sessoes where sessao='$sessid' and status='ABERTA'", $conexao);
# Pega a quantidade de linhas encontradas na busca
$linhas = mysql_num_rows($consulta);
# Se há mais de uma linha encontrada, grava sessão e login em duas variáveis
if ($linhas >= 1){;
$sessao = mysql_result($consulta,0,"sessao");
$usuario = mysql_result($consulta,0,"usuario");
};
#Finaliza a conexão com o banco de dados
mysql_close($conexao);
# Confere se a variável "sessao" não é diferente da sessão atual do usuário;
# Confere se a variável "sessao" não é vazia;
# Confere se a variável "usuario" não é vazia.
if ($sessao != $sessid or $sessao == "" or $usuario == ""){;
# Se alguma das verificações acima for verdadeira, executa os códigos abaixo
# Destrói a sessão atual
session_unset();
session_destroy();
# Redireciona para a página de login.php
header("Location: login.php");
};
?>