+9

Sistema Seguro de Login Básico

criado por Everton Ricardo Cardoso em 21/08/2005 8:53pm
1. Tabela de login

Crie um database e crie a tabela login de acordo com as informações abaixo no seu servidor de banco de dados MySQL:

CREATE TABLE login ( 
    codLogin MEDIUMINT(8) NOT NULL AUTO_INCREMENT,
    login VARCHAR(100) NOT NULL,
    senha VARCHAR(120) NOT NULL,
    PRIMARY KEY (codLogin) 
);

2. Funções e configurações:

<?php
/* config.php */
function dbcon()
{
    @mysql_connect("localhost", "usuario", "senha") or die(mysql_error());
    @mysql_select_db("nome_do_db") or die(mysql_error());
}
?>

3. Criando o formulário de login

<?php
/* login.php */
if (isset($_GET["erro"])) {
    echo "<p>ERRO: " . $_GET["erro"] . "</p>";
}
?>
<form action="logar.php" name="login" method="post" enctype="multipart/form-data">
<label>Login:</label><input type="text" name="login"><br />
<label>Senha:</label><input type="password" name="senha"><br />
<input type="submit" value="Conectar">
</form>

4. Criando a rotina de login

Nessa aréa vamos usar a função md5() (http://www.php.net/md5), criando uma senha criptografada.

<?php
/* logar.php */
include("config.php");
session_start();

// pegando dados do formulario
$login = str_replace("'","",$_POST["login"]);
$senha = $_POST["senha"];
$senha = md5($senha);

// verificado login no banco de dados
dbcon();

$query = mysql_query("select * from login where login = '$login' and senha = '$senha'");
if (!$query) {
    die("Erro ao select da tabela login. Técnico:" . mysql_error());
}

// verificando se encontrou registros do login e senha no banco de dados.
if (mysql_num_rows($query) > 0) { 
    $dados = mysql_fetch_array($query); // pegando dados do banco.
    $login = $dados["login"];
    $chave = "1a2cf8gk68gj67gf784kh69fo6"; // chave secreca
    $ip = $_SERVER["REMOTE_ADR"]; // ip do usuario
    $hora = time(); // pegado horario atual.
    $chave = md5($login . $chave . $ip . $hora);
    // registrando a session com um array com o codLogin, login e a chave.
    $_SESSION['MeuLogin'] = array("id" => $codLogin,"login" => $login,"chave" => $chave,"hora" => $hora); 
    // redirecionando para a pagina registrada.
    header("location: AreaRestrita.php");
} else { 
    // redirecionando para o formulario de login com o erro.
    header("location: login.php?erro=Usuário ou senha Inválida"); 
}
?>

5. Criando o arquivo de controle das páginas restritas.

<?php
/* restritos.php */ 
session_start();

if (isset($_SESSION['MeuLogin'])) { 
    $login = $_SESSION['MeuLogin']['login'];
    $hora = $_SESSION['MeuLogin']['hora'];	

    $chave = "1a2cf8gk68gj67gf784kh69fo6"; // chave secreca
    $ip = $_SESSION['REMOTE_ADDR']; // pegando ip do usuario
    if ($_SESSION['MeuLogin']['chave'] != md5($login . $chave . $ip . $hora)) { 
        // verificado se a chave é válida
        header("Location: login.php?erro=$login Login invalido");
    }

    // atualizando a chave com novo horario de acesso
    $hora = time();
    $chave = md5($login . $chave . $ip . $hora);
    // registrando os novos dados na session.
    $_SESSION['MeuLogin'] = array("id" => $codLogin,"login" => $login,"chave" => $chave,"hora" => $hora); 
} else {
    header("location: login.php?erro=Aceso restrito");
}
?>

6. Limitando acesso das suas páginas

<?php
/* AreaRestrita.php */
require("restritos.php"); 
?>
<p> Página de acesso Registro. Bem vindo <? echo $login; ?>! <a href="logout.php">logout</a></p>

7. Logout do sistema.

<?php
/* logout.php */
session_start();
unset($_SESSION['MeuLogin']);
header("location: login.php");
?>

Esse é um pequeno sistema para quem tá iniciando e quer desenvolver um sistema de login. Dúvidas? Envie um comentário abaixo!

Comentários:

Mostrando 1 - 10 de 49 comentários
Muito obrigado por compartilhar o código, está me ajudando bastante.
09/10/2016 6:16pm (~7 anos atrás)

Xavier disse:
Mui bueno !!!
25/07/2013 11:18am (~10 anos atrás)

Cristiano disse:
Pessoal sou novo no php, e fiz um sistema com inclusão de dados com autenticação de usuarios no mysql, mas gostaria que no sistema, quando o usuario faz uma inclusão de dados fique gravado o nome desse usuario.
Alguem pode me ajudar?
Obrigado.
08/07/2009 4:37pm (~15 anos atrás)

Cristiano disse:
Pessoal sou novo no php, e fiz um sistema com inclusão de dados com autenticação de usuarios no mysql, mas gostaria que no sistema, quando o usuario faz uma inclusão de dados fique gravado o nome desse usuario.
Alguem pode me ajudar?
Obrigado.
08/07/2009 4:37pm (~15 anos atrás)

Cristiano disse:
Pessoal sou novo no php, e fiz um sistema com inclusão de dados com autenticação de usuarios no mysql, mas gostaria que no sistema, quando o usuario faz uma inclusão de dados fique gravado o nome desse usuario.
Alguem pode me ajudar?
Obrigado.
08/07/2009 4:37pm (~15 anos atrás)

Cristiano disse:
Pessoal sou novo no php, e fiz um sistema com inclusão de dados com autenticação de usuarios no mysql, mas gostaria que no sistema, quando o usuario faz uma inclusão de dados fique gravado o nome desse usuario.
Alguem pode me ajudar?
Obrigado.
08/07/2009 4:37pm (~15 anos atrás)

Cristiano disse:
Pessoal sou novo no php, e fiz um sistema com inclusão de dados com autenticação de usuarios no mysql, mas gostaria que no sistema, quando o usuario faz uma inclusão de dados fique gravado o nome desse usuario.
Alguem pode me ajudar?
Obrigado.
08/07/2009 4:37pm (~15 anos atrás)

Alguém já viu algum sistema de logim com limete de acessos?
08/07/2009 11:16am (~15 anos atrás)

bruno disse:
aki deu tudo certo...
mas como eu boto os dados do login e senha dentro da tabela?
04/11/2007 7:56am (~16 anos atrás)

Roberto Alves disse:
Boas, parabens por este codigo em php, está fantastico.
Eu tenho uma dúvida parecida com a anterior...como posso ir buscar o nome do usuario numa pagina do site mais á frente...
obrigado
15/05/2007 9:52am (~17 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)