Restringindo páginas de forma simples com PHP

Olá pessoal, tudo bom? Nesse artigo pretendo apresentar uma forma simples de restringir uma página com um nome de usuário e senha. Na verdade é uma forma muito simples mesmo; é recomendada para sistemas pequenos, onde necessita restringir algumas páginas para algum administrador.

Para isso, vamos criar um arquivo chamado restrito.php que terá o seguinte código:

<?php
// Definimos o nome de usuário e senha de acesso
$usuario = "usuario";
$senha = "senha";

// Criamos uma função que exibirá uma mensagem de erro caso os dados estejam errados
function erro(){
    // Definindo Cabeçalhos
    header('WWW-Authenticate: Basic realm="Administracao"');
    header('HTTP/1.0 401 Unauthorized');
	// Mensagem que será exibida
    echo '<h1>Voce não tem permissão para acessar essa área</h1>';
	// Pára o carregamento da página
    exit;
}

// Se as informações não foram setadas
if (!isset($_SERVER['PHP_AUTH_USER']) or !isset($_SERVER['PHP_AUTH_PW'])) {
	erro();
} 
// Se as informações foram setadas
else {
	// Se os dados informados forem diferentes dos definidos
	if ($_SERVER['PHP_AUTH_USER'] != $usuario or $_SERVER['PHP_AUTH_PW'] != $senha) {
		erro();
	}
}
?>

Creio que não será nem necessário explicar o código. Vale apenas ressaltar que devem ser definidos o nome de usuário e a senha. Agora basta incluir esse arquivo no início das páginas que devem ser restritas. Por exemplo:

<?php
// Incluimos o arquivo de restrição
require_once("restrito.php"); 
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Administração</title>
</head>

<body>
<h1>Bem vindo a administração!</h1>
</body>
</html>

Mas alguns podem pensar: “Quer dizer que toda hora vou ter que digitar o nome de usuário e senha?”, na verdade não. As informações são salvas na sessão, portanto serão perdidas apenas quando o navegador for fechado.

Lembrando que esse script deve ser usado apenas em pequenos sistemas onde há apenas um ou alguns administradores. Esse script é seguro, porém muito limitado. De qualquer forma, ele pode ser muito útil e poupar um tempo de trabalho.

Bom pessoal, por hoje é isso. Espero que esse script venha a ser útil para vocês.
Abraços.