Ir para o conteúdo

FIXME Rever texto

Sistema de login simples em PHP

Escrever um sistema para autenticação de utilizadores em PHP, é algo bastante simples e, com algumas linhas de código, consegue-se um código bem estruturado.

Este exemplo apenas usa um ficheiro com a extensão .php para validar o login, e uma base de dados. Primeiro comecemos por criar a base de dados. É necessária uma tabela 'utilizadores', onde se guardam e verificam os logins:

CREATE TABLE utilizadores (
    login CHAR(25) NOT NULL PRIMARY KEY,
    password CHAR(25) NOT NULL
);

Assim, temos visivelmente um formulário na página login.php, que ao preencher o nome de utilizador e a palavra passe, vai verificar se o nome de utilizador existe e se a palavra passe introduzida está correcta. Se estes estiverem correctos, vai criar uma nova session. Assim, só necessita de introduzir o seguinte código nas páginas que deseja ver protegidas por autenticação: index.php

<?php
session_start();

if (!isset($_SESSION["login_usuario"]) || !isset($_SESSION["senha_usuario"])) {
    // enviar o utilizador para a pagina de login
    header("Location: login.php");
} else {
    // o utilizador tem sessao iniciada e carregamos o resto da pagina
    $login_usuario = $_SESSION["login_usuario"];
    $senha_usuario = $_SESSION["senha_usuario"];
}

?>

//Conteúdo da página aqui

login.php

<?php
if (!empty($_POST['Submit'])) {

    //Faz a conecção com a base de dados
    include("includes/ligacao.php");

    //recebe os valores submetidos, protegendo-os contra ataques de SQL injection
    $login = mysql_real_escape_string($_POST["login"]);
    $senha = mysql_real_escape_string($_POST["senha"]);

        // ver se o utilizador e a sua password constam na base de dados
    $resultado = mysql_query("select * from utilizadores where login = '$login' and password = '$senha'");
    $linhas = mysql_num_rows($resultado);

    //testa se existe algum utilizador com o login pretendido
    if ($linhas != 1) { 
        // introduziu dados incorrectos, nao existe 1 utilizador
        $msg_erro = "Introduziu dados inválidos, por favor tente novamente!";
        }
    else {
        // o utilizador existe, e é único, logo os dados estão correctos
        //Inicia a session
        session_start();
        $_SESSION["login_usuario"] = $login;
        $_SESSION["senha_usuario"] = $senha;

        // redireciona para a pagina principal
        header("Location: index.php");
                exit();
    }
}
?>
<html>
<head>
<title>Log-in</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<?php
    // se houver alguma mensagem de erro, coloca-la aqui
    echo $msg_erro;
?>
<input name="login" type="text" class="caixadetexto" size="15" /></div>
<input name="senha" type="password" class="caixadetexto" size="15" /></div>
<input type="submit" name="Submit" value="login" />
</form>

</body>
</html>