Académique Documents
Professionnel Documents
Culture Documents
Ficheiros usados
Wamp/www/exemplo2/
Login.php
processaLogin.php
verificarLogin.php
Base de dados
Para poder armazenar os utilizadores, necessrio que estes estejam numa base de
dados. Vamos ver como criar a estrutura e adicionar alguns utilizadores.
Estrutura
No mnimo, iremos precisar de um username e de uma password por utilizador. A nossa
tabela pode ser feita da seguinte forma:
Com este comando, criamos uma tabela chamada users, que possui 3 colunas: userid,
que ir identificar univocamente o utilizador na base de dados; username, que ir conter o
nome de utilizador, limitado a 50 caracteres; password, vai conter a sntese da password.
O tamanho do campo password 40 caracteres, porque este o nmero de caracteres
devolvidos pela funo SHA1. No necessrio alterar este tamanho, mas se for
necessrio, nunca dever ser inferior a 40.
De notar que o campo password ir conter no a password em texto plano, mas sim a sua
sntese, aps ser submetida funo SHA1. Desta forma, garante-se confidencialidade da
password, caso haja algum ataque base de dados, pois o atacante apenas fica a
conhecer a sntese, e no a password exacta.
Adicionar utilizadores
Vamos agora adicionar alguns utilizadores base de dados. O comando pode ser alterado
conforme o pretendido, desde que se respeite sempre a sintaxe SQL, e pode ser
executado tantas vezes quanto o nmero de utilizadores que pretendemos adicionar:
<html>
<head>
<title>Login básico com PHP</title>
</head>
<body>
<form action="processaLogin.php" method="POST">
<p>Username: <input type="text" name="username" /></p>
<p>Password: <input type="password" name="password" /></p>
<p><input type="submit" name="submit" value="Login" /></p>
</form>
</body>
</html>
<?php
// comear ou retomar uma sesso
session_start();
// falhou o login
echo "<p>Utilizador ou password invalidos. <a
href=\"login.php\">Tente novamente</a></p>";
}
}
?>
<?php
// iniciar uma sesso
session_start();
if (empty($_SESSION['id'])) {
Tudo o que este pequeno script faz garantir que a sesso se encontra iniciada e no se
encontra vazia. Se a sesso se encontra vazia, ento o utilizador redireccionado, atravs
da funo header, para a pgina de login. Caso a sesso no seja vazia, a funo "no faz
nada". E porqu?
Este script vai ser includo em todas as pginas que queremos ver protegidas, ie, exigem
autenticao. Iremos usar a instruo requires para carregar o script que verifica se a
sesso est ou no activa. Um exemplo:
protegido.php
<?php
// pagina protegida, incluir script de verificao de login
require 'verificarLogin.php';
?>
<h1>Página protegida!</h1>
<p>Olá <u><?php echo $_SESSION['username']; ?></u>, esta
é a página protegida</p>
Terminar sesso
At aqui vimos como iniciar uma sesso, e garantir que um recurso apenas acedido se
um utilizador estiver com sesso iniciada. Nesta seco, vamos ver como terminar essa
sesso de utilizador, deixando este de poder aceder pgina protegida at fazer login
novamente. Alteremos a nossa pgina protegida para incluir uma ligao de logout:
protegido.php
<?php
// pagina protegida, incluir script de verificao de login
require 'verificarLogin.php';
?>
<h1>Página protegida!</h1>
<?php
// aceder s sesses
session_start();
Consideraes finais
Este foi mais um exemplo bsico de um sistema de login. O ponto forte deste tutorial,
embora pouco explicito, foi aplicar o conceito de segurana, de modo a criar um sistema
seguro. Por exemplo, ataques de PHP injection ou SQL injection iro falhar, por usarmos
funes de segurana adequadas. Infelizmente, aparecem muitas vezes scripts sem
qualquer preocupao ao nvel de segurana quando to fcil aplic-la.