Ferramentas de Utilizador

Ferramentas de Site


dev_web:php:snippet:login_basico

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>
dev_web/php/snippet/login_basico.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)