Oi pessoal, vou estar ensinando aqui neste post como fazer uma página segura com PHP e MySQL, iremos criar uma página de login, usuario com nome e senha, uma página segura e uma página de logout.
Primeiro entre no PHPMyAdmin (se não tens server, baixe um aqui) e crie um novo banco de dados chamado "paginadb" (ou como queira chamá-la).
Agora vamos criar uma nova tabela chamada "usuarios". Copie o código abaixo na aba "SQL" do seu bd, vamos explicá-lo abaixo:
CREATE TABLE `paginadb`.`usuarios` (
`id_user` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nome` VARCHAR( 100 ) NOT NULL ,
`senha` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `id_user` )
) ENGINE = MYISAM
- A função "CREATE TABLE", cria a tabela ('usuarios' no caso) no banco de dados em aspas (no caso 'paginadb')
- 'id_user' INT (11) NOT NULL AUTO_INCREMENT = Cria o campo 'id_user', que será o nossa chave primária, ela ira se numerar automaticamente por causa da ação "AUTO_INCREMENT" (só pode haver uma dessa ação na tabela, isso define que ela é o índice); "INT (11)" significa o tipo do campo, neste caso ele só recebe números inteiros, e o número em parenteses "(11)" é a quantidade de caracteres que o campo suporta, e "NOT NULL" significa que o campo não é nulo.
- 'nome' VARCHAR (100) NOT NULL = Cria o campo 'nome', que será onde ficará o nome do usuário cadastrado no site; "VARCHAR" é um outro tipo de campo, que pode conter de 0 a 255 caracteres variáveis, "(100)" é a quantidade de caracteres que podem ser gravados neste campo.
- 'senha' VARCHAR (100) NOT NULL = Cria o campo 'senha', onde ficará a senha do usuário.
- PRIMARY KEY ('id_user') = Ele define que a chave primária será o campo "id_user"
Agora já temos nossa tabela, vamos adicionar agora manualmente um usuario qualquer (em outro post explico como fazer uma página de cadastro). Vá na aba "SQL" de novo e adicione o seguinte código:
INSERT INTO `paginadb`.`usuarios` (
`id_user` ,
`nome` ,
`senha`
)
VALUES (
NULL , 'admin', 'admin123'
);
- INSERT INTO 'paginadb'.'usuarios' = Está inserindo dentro do banco de dados "paginadb" e na tabela "usuarios" as informações seguintes.
- 'id_user', 'nome', 'senha' = São os campos que receberão os valores informados.
- VALUES ( NULL, 'admin', 'admin123' ); = Estes são os valores que entraram na tabela, na ordem de cada campo. No "id_user" entra o "NULL" porque ele já vai automaticamente adicionar um valor (pela ação "AUTO_INCREMENT"); "admin" entra no campo "nome", e "admin123" no campo "senha".
Pronto! Nossa tabela com um usuário já está criada, vamos a página de login. Crie uma página com o nome "login.php", e coloque o código:
<?php
$host = "localhost"; //Aqui informamos o host do banco de dados, pode ser localhost para qualquer um ou o nome do seu site
$user = "NOME"; //O nome de usuário do PHPMyAdmin
$senha = "SENHA"; //Sua senha do PHPMyAdmin
$db = "paginadb"; //Nome do seu Banco de Dados, no nosso caso "paginadb"
mysql_connect($host, $user, $senha) or die (mysql_error()); //Ele conecta com o bd através desta função
mysql_select_db($db) or die (mysql_error()); //Ele acessa o banco de dados e se não der certo devolve uma mensagem de erro
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login Seguro</title>
<style type="text/css">
<!--
.style1 {font-family: Arial}
-->
</style>
</head>
<body>
<div align="center">
<form id="form1" name="form1" method="post" action="logar.php">
<table width="200" border="1">
<tr>
<td colspan="2"><div align="center" class="style1">Login seguro</div></td>
</tr>
<tr>
<td width="53">Nome:</td>
<td width="131"><input name="nome" type="text" id="nome" /></td>
</tr>
<tr>
<td height="23">Senha:</td>
<td><input name="senha" type="password" id="senha" /></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input type="submit" value="Entrar" />
</div></td>
</tr>
</table> </form>
</div>
</body>
</html>
<?php
//Fazendo a conexão com o bd
$host = "localhost";
$user = "root";
$senha = "vertrigo";
$db = "paginadb";
mysql_connect($host, $user, $senha) or die (mysql_error());
mysql_select_db($db) or die (mysql_error());
//Conexão feita!
//Define o nome e a senha, recebidos pela página login.php
$nome = $_POST['nome'];
$senha = $_POST['senha'];
//Seleciona os cadastros da tabela, e checa se o usuario realmente existe
$sql_logar = "SELECT * FROM usuarios WHERE nome = '$nome' && senha = '$senha'";
$exe_logar = mysql_query($sql_logar) or die (mysql_error());
$fet_logar = mysql_fetch_assoc($exe_logar);
$num_logar = mysql_num_rows($exe_logar);
if ($num_logar == 0){
echo "Login ou senha inválido(s)."; //Caso não exista retorna esta mensgem
echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para voltar.</a>";
}else{
session_start(); //Inicia a sessão caso o usuario realmente exista
$_SESSION['nome'] = $nome;
$_SESSION['senha'] = $senha;
header("Location:segura.php"); //Redireciona para a página segura
}
?>
Ok! Vamos agora para a página segura, crie a página "segura.php" e copie o código abaixo nela:
<?php
//Faz a conexão com o banco
$host = "localhost";
$user = "root";
$senha = "vertrigo";
$db = "paginadb";
mysql_connect($host, $user, $senha) or die (mysql_error());
mysql_select_db($db) or die (mysql_error());
//Termina a conexão
//Inclui a página que fará está página restrita para usuarios logados
include("restrito.php");
//Seleciona da tabela as informações do usuario
$sql_busca = "SELECT * FROM usuarios WHERE nome = '$usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$nome = $fet_busca['nome'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Local Seguro</title>
</head>
<body>
<div align="center">
<table width="471" border="1">
<tr>
<td width="461">Parabéns <? echo "$nome"; //Mostra o nome do usuario logado ?> você está em área segura! Está página só é acessível para pessoas logadas!</td>
</tr>
<tr>
<td><div align="center"><a href="logout.php">Logout (sair)</a></div></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</div>
</body>
</html>
Vamos criar agora a página que fará a restrição à usuário logados. Crie a página "restrito.php" e copie o código abaixo:
<?php
@session_start(); //Checa se há sessão iniciada
if (isset($_SESSION['nome']) && isset($_SESSION['senha'])){ //Pega os valores do nome e senha
$usuario = $_SESSION['nome']; //Cria uma váriavel com o nome do usuario
}
else { //Se a sessão não tiver sido iniciada ele redireciona para a página de login
header("Location:login.php");
exit();
}
?>
<?php
session_start(); //Pega a sessão iniciada
unset($_SESSION["nome"]); //Seleciona o nome
unset($_SESSION["senha"]); //Seleiona a senha
session_destroy(); //Destroi a sessão
header("location: login.php"); //Redireciona à página de login
?>