Achei esse tutorial na net Muito Bom.
É recomendável que você já tenha um conhecimento prévio de HTML e, se possível, PHP e MySQL para tornar as coisas mais fáceis.
Nosso sistema será bem simples: um arquivo chamado seguranca.php, que deverá ser incluído no topo do seu site (em todas as páginas) e que faz a conexão com o banco de dados e que possui algumas funções usadas para redirecionar o visitante para o formulário de login (login.php) caso ele não esteja logado.
Vamos ao trabalho:
O que iremos definir primeiro é a tabela usada para armazenar os usuários do sistema:
1 | DROP TABLE IF EXISTS `usuarios`; |
2 | CREATE TABLE IF NOT EXISTS `usuarios` ( |
3 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, |
4 | `nome` varchar(100) NOT NULL, |
5 | `usuario` varchar(50) NOT NULL, |
6 | `senha` varchar(50) NOT NULL, |
8 | UNIQUE KEY `usuario` (`usuario`) |
9 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; |
Execute esse bloco SQL no seu banco de dados para criar a tabela usada pelo sistema.
Depois disso, vamos ao formulário de login que você colocará dentro de um arquivo chamado login.php:
1 | <form method="post" action="valida.php"> |
3 | <input type="text" name="usuario" maxlength="50" /> |
6 | <input type="password" name="senha" maxlength="50" /> |
8 | <input type="submit" value="Entrar" /> |
Esse formulário, com apenas dois campos, manda pra página valida.php, que é um pequeno PHP que receberá os dados enviados pelo formulário, fará a validação deles e mandará o visitante ou pra página interna (index.php) ou de volta pra página de login (login.php).
Esse é o codigo fonte do arquivo valida.php:
02 | include("seguranca.php"); |
05 | if ($_SERVER['REQUEST_METHOD'] == 'POST') { |
08 | $usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : ''; |
09 | $senha = (isset($_POST['senha'])) ? $_POST['senha'] : ''; |
12 | if (validaUsuario($usuario, $senha) == true) { |
14 | header("Location: index.php"); |
A estrutura do seu site, até esse ponto, deve estar dessa forma:
../pasta_do_seu_site/index.php » Página intera a ser protegida
../pasta_do_seu_site/login.php » Página com o formulário de login
../pasta_do_seu_site/valida.php » Página que faz a validação dos dados do formulário
Agora vamos criar o arquivo seguranca.php na mesma pasta dos demais arquivos:
015 | $_SG['conectaServidor'] = true; |
016 | $_SG['abreSessao'] = true; |
018 | $_SG['caseSensitive'] = false; |
020 | $_SG['validaSempre'] = true; |
023 | $_SG['servidor'] = 'localhost'; |
024 | $_SG['usuario'] = 'root'; |
026 | $_SG['banco'] = 'test'; |
028 | $_SG['paginaLogin'] = 'login.php'; |
030 | $_SG['tabela'] = 'usuarios'; |
038 | if ($_SG['conectaServidor'] == true) { |
039 | $_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'],$_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."]."); |
040 | mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."]."); |
044 | if ($_SG['abreSessao'] == true) { |
056 | function validaUsuario($usuario, $senha) { |
059 | $cS = ($_SG['caseSensitive']) ? 'BINARY' : ''; |
062 | $nusuario = addslashes($usuario); |
063 | $nsenha = addslashes($senha); |
066 | $sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1"; |
067 | $query = mysql_query($sql); |
068 | $resultado = mysql_fetch_assoc($query); |
071 | if (empty($resultado)) { |
079 | $_SESSION['usuarioID'] = $resultado['id']; |
080 | $_SESSION['usuarioNome'] = $resultado['nome']; |
083 | if ($_SG['validaSempre'] == true) { |
085 | $_SESSION['usuarioLogin'] = $usuario; |
086 | $_SESSION['usuarioSenha'] = $senha; |
096 | function protegePagina() { |
099 | if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) { |
102 | } else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) { |
104 | if ($_SG['validaSempre'] == true) { |
106 | if (!validaUsuario($_SESSION['usuarioLogin'],$_SESSION['usuarioSenha'])) { |
117 | function expulsaVisitante() { |
121 | unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'],$_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']); |
124 | header("Location: ".$_SG['paginaLogin']); |
Não vou poder explicar todas as funções do arquivo pq é muita coisa.. Mas todas elas estão devidamente comentadas e documentadas… É só olhar.
Com esse arquivos nós já nos conectamos automaticamente ao servidor MySQL, então se você usar outra forma pra fazer a conexão, vá na parte de configurações do seguranca.php e defina a variável $_SG['conectaServidor'] pra falso (false). O mesmo acontece pra sessão com a variável $_SG['abreSessao'].
Agora é só incluir essas linhas no topo de cada arquivo que deverá ter o acesso restrito:
1 | include("seguranca.php"); |
Quando vocês quiserem exibir o nome do usuário logado, é só fazer isso:
1 | echo "Olá, " . $_SESSION['usuarioNome']; |
Fonte: http://blog.thiagobelem.net/criando-um-sistema-de-login-com-php-e-mysql/
Bom dia. Bom código me ajudou muito, mas tenho uma observação a fazer:
ResponderExcluirNa linha 066 do arquivo segurança php há um pequeno erro que não permite que o sistema funcione.
066: $sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS."
ao invéz de ser ..."SELECT 'id', 'nome'... deve ser "SELECT 'usuario', 'senha'...
Abraço e parabéns.