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>