Nesta segunda parte vou-vos mostrar como se pode efectuar um login utilizando um utilizador guardado numa base dados e como criar uma sessão para ele se manter ligado.
Toda a sequência:
- Criar uma ligação
- Efectuar um login
- Inserir e remover dados na base de dados
- Obter e apresentar os dados da base de dados
Parte 2 – Efectuar um Login
Agora que já temos a nossa classe de acesso à base de dados a funcionar (criada na parte 1 deste tutorial), vamos utiliza-la para fazer o nosso login.
Formulário de login
Primeiro precisamos de criar o nosso formulário de login e para isso vamos alterar o nosso ficheiro index.php para ficar da seguinte maneira:
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Ligação a base de dados</title> </head> <body> <form action="dbconnect.php" method="post"> Nome do utilizador: <input type="text" name="username"> Password: <input type="text" name="password"> <input type="hidden" name="opcao" value="1"> <input type="submit" value="Login"> </form> </body> </html>
Como podem ver estamos a nossa acção para o formulário é um ficheiro PHP com o nome dbconnect.php, o qual ainda não o criámos, portanto esse vai ser o nosso proximo passo.
Criação do ficheiro dbconnect.php
Esta será o nosso ficheiro PHP responsável por fazer a ligação entre os pedidos do utilizador e a nossa classe de acesso à base de dados.
E aqui está o seu código:
<?php include("AcessoBD.php"); $opcao = $_REQUEST['opcao']; if($opcao == 1){ $ligacaoBD = new AcessoBD(); $user = $_REQUEST['username']; $pass = $_REQUEST['password']; if(isset($user) && isset($pass)){ $result = $ligacaoBD->login($user,$pass); } if($result == 1){ header("Location: loggedin.php"); } header("Location: index.php"); } ?>
Como podem ver, ao ser chamado este ficheiro, o primeiro valor que vamos ler será o valor “opcao” este é uma dos campos do formulário, é um campo escondido(hidden) e irá servir para depois definirmos que tipo de acção queremos que seja efectuada.
Estamos também a chamar a função login do ficheiro AcessoBD que ainda não existe, e é isso que vamos fazer agora.
Criação da função login
Esta será a responsável por efectuar todo o login.
O ficheiro AcessoBD.php ficará então assim:
<?php class AcessoBD{ private $con; private $host = 'localhost'; private $user = 'root'; private $password = 'password'; private $database = 'teste'; function criarCon(){ $this->con = mysql_connect($host, $user, $password); if (!$this->con) { die('Não foi possível conectar: ' . mysql_error()); } $db_selected = mysql_select_db($database, $this->con); return $db_selected; } function login($user,$pass){ $result = $this->criarCon(); if($result == 1){ $password = $this->getUserPass($user); if (($pass == $password) && ($password != 0)){ include("sessionmanager.php"); $sessionman = new sessionmanager(); $sessionman->criarUser($user); $return 1; } } return 0; } private function getUserPass($user){ $query = sprintf("SELECT username, password FROM users WHERE username='%s'",mysql_real_escape_string($user)); $result = mysql_query($query,$this->con); if (mysql_num_rows($result) > 0){ $userdata = mysql_fetch_assoc($data); $mysql_close($this->con); return $userdata['password']; } $mysql_close($this->con); return 0; } } ?>
Como deve ter reparado criámos também a função getUserPass() responsável por retornar a palavra pass do utilizador, no entanto esta é privada o que significa que só pode ser acedida dentro da classe AcessoBD isto para não haver falhas na segurança.
Utilizamos também um gestor de sessões chamado sessionmanager.php e esse é o nosso próximo passo.
Gestor de sessões
O nosso gestor de sessões por enquanto vai apenas criar uma sessão para o utilizador que acabou de fazer o seu login.
O ficheiro é o sessionmanager.php:
<?php class sessionmanager{ function criarUser($user){ session_start(); $_SESSION['username'] = $user; } function getNome(){ return $_SESSION['username']; } } ?>
Como vêm é muito simples, recebe um nome de utilizador e adiciona à variável de sessão.
Neste momento temos o nosso login completo, so nos faltas a página loggedin.php para o qual o utilizador está a ser direccionado no caso de o login ter sucesso.
O final
Página loggedin.php:
<!doctype html> <html> <head> </head> <body> <?php include("sessionmanager.php"); $sessionman = new sessionmanager(); ?> Parabens <?php $sessionman->getNome(); ?>, login efectuado com sucesso. </body> </html>
No próximo passo vou escrever sobre como escrever remover e editar a base de dados.
Espero ter conseguido ser explicito e no caso de terem alguma duvida basta perguntarem.
Não se esqueçam de espreitar a página do facebook.