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>