Escolar Documentos
Profissional Documentos
Cultura Documentos
Veja neste artigo como desenvolver um sistema de login com nvel de acesso de usurio comum e administrador usando PHP e MySQL. por Thiago Belem
Fala pessoal, hoje vamos ver como se faz um sistema de login passo-a-passo. O meu intuito nesse artigo no entregar um script pronto, mas sim te mostrar o caminho das pedras enquanto voc quem criar o seu prprio sistema. Verses utilizadas nesse artigo: PHP 5.2.9 e MySQL 5.0.5. O nosso sistema consistir em um login simples, validado por usurio e senha (encriptada) contra uma tabela no banco de dados e armazenando os dados na sesso. Haver dois nveis de acesso para os nossos usurios: normal (1) e administrador (2).
INSERT INTO `usuarios` VALUES (NULL, 'Administrador Teste', 'admin', SHA1('admin' ), 'admin@demo.com.br', 2, 1, NOW( ));
Como vocs podem perceber, o nosso campo de senha tem 40 caracteres e quando cadastramos os usurios testes usamos isso significa que usaremos uma senha encriptada.
Com isso, todo cdigo que vier depois desse if estar seguro de que os dados foram preenchidos no formulrio. Agora ns iremos abrir uma conexo com o MySQL mas essa conexo pode ser feita de outra forma, at antes do if se voc preferir Depois de abrir a conexo ns iremos transmitir os dois valores inseridos pelo visitante (usurio e senha) para novas variveis e usaremos o mysql_real_escape_string() para evitar erros no MySQL. Listagem 6: conectando com o MySQL 1 <?php 2 // Verifica se houve POST e se o usurio ou a senha (so) 3 vazio(s) 4 if (!empty($_POST) AND (empty($_POST['usuario']) OR 5 empty($_POST['senha']))) { header("Location: index.php"); exit; 6 } 7 8 // Tenta se conectar ao servidor MySQL 9 mysql_connect('localhost', 'root', '') or 10trigger_error(mysql_error()); // Tenta se conectar a um banco de dados MySQL 11 mysql_select_db('usuarios') or trigger_error(mysql_error()); 12 13 $usuario = mysql_real_escape_string($_POST['usuario']); 14 $senha = mysql_real_escape_string($_POST['senha']); 15 16 ?> Agora hora de validar os dados contra a tabela de usurios: Listagem 7: Validando Dados 1 <?php 2 // Verifica se houve POST e se o usurio ou a senha (so) 3 vazio(s) 4 if (!empty($_POST) AND (empty($_POST['usuario']) OR 5 empty($_POST['senha']))) { 6 header("Location: index.php"); exit; } 7 8 // Tenta se conectar ao servidor MySQL 9 mysql_connect('localhost', 'root', '') or 10trigger_error(mysql_error()); 11 // Tenta se conectar a um banco de dados MySQL mysql_select_db('usuarios') or trigger_error(mysql_error()); 12 13 $usuario = mysql_real_escape_string($_POST['usuario']); 14 $senha = mysql_real_escape_string($_POST['senha']); 15 16 // Validao do usurio/senha digitados 17 $sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE 18(`usuario` = '".$usuario ."') AND (`senha` = '". sha1($senha) ."') 19AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql); 20 if (mysql_num_rows($query) != 1) { 21 // Mensagem de erro quando os dados so invlidos e/ou o 22usurio no foi encontrado 23 echo "Login invlido!"; exit; } else { 24 // Salva os dados encontados na varivel $resultado 25 $resultado = mysql_fetch_assoc($query); 26 } 27 ?>
Repare que estamos buscando registros que tenham o usurio igual ao digitado pelo visitante e que tenham uma senha igual a verso SHA1 da senha digitada pelo visitante Tambm buscamos apenas por registros de usurios que estejam ativos, assim quando voc precisar remover um usurio do sistema, mas no pode simplesmente excluir o registro s trocar o valor da coluna ativo pra zero. A consulta gerada fica mais ou menos assim: Listagem 8: Select na tabela
SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = 'a')
Depois de rodar a consulta (query) ns verificamos se o nmero de resultados encontrados (ou no) diferente de um, caso seja exibida uma mensagem de erro acompanhada de um exit que finaliza o script Caso ele encontre apenas um resultado ns temos o nosso usurio e j puxamos o seu ID, nome e nvel de acesso do banco de dados.
13 14 15 16 17 18
10<$nivel_necessario)) { // Destri a sesso por segurana 11 session_destroy(); 12 // Redireciona o visitante de volta pro login 13 header("Location: index.php"); exit; } 14 15 ?> 16
Cdigo de Logout
O arquivo logout.php to simples que pode ter uma linha s: Listagem 12: Cdigo de Logout 1index.php");exit; ?>
<?php session_start(); session_destroy(); header("Location:
Ou se voc preferir, uma verso mais extensa: Listagem 13: Cdigo de logout mais extenso 1 session_start(); // Inicia a sesso 2 session_destroy(); // Destri a sesso limpando todos os 3valores salvos header("Location: index.php"); exit; // Redireciona o 4 visitante 5 ?> Quem no conseguir fazer um sistema de login depois dessa aula no vai ganhar batata frita no fim do dia! :) Pra quem quiser, aqui tem um ZIP para download com os arquivos desse artigo. Artigo originalmente publicado por Thiago Belem: Como criar um Sistema de Login com Nveis de Permisso
<?php