sábado, 30 de junho de 2012

PHP: Como criar página com senha



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>


Pronto! Está página irá enviar as informações para uma página que irá autenticar o login. Crie agora a página chamada "logar.php" e copie o código abaixo nela:

<?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>&nbsp;</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();
}
?>



Pronto o sistema de página está criado! Agora vamos criar a página para desconectar o usuário da área segura. Crie a página "logout.php" e copie o código abaixo nela:

<?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
?>


Agora você já tem um sistema de página segura completo! Nos próximos posts ensinaremos mais sobre páginas PHP!!! Fique ligado no Core Design!

0 comentários:

Postar um comentário

Twitter Delicious Facebook Digg Stumbleupon Favorites More