logoLog da Selva


Como criar um sistema simples de login ? (Aula 02 e 03)

Escrito em Aleatórios, Tecnologia, PHP, Banco de Dados, HTML por Tiago Guedes em 30 de Dezembro de 2007

Olá pessoal, como prometido estou aqui de volta (depois de muiiiiito tempo) para concluir nossas aula sobre o sistema de login php. Para conpensar o tempo que fiquei afastado do Log da Selva vou adiantar, além da aula 02, a aula 03. No mais, é isso pessoal, vamos ao que interessa !

Aula 02 - Formulário e script de login

:: Formulário de login

Antes de passarmos para o php iremos criar aquele famoso formulário de login (login - senha) no html. Ele terá basicamente a mesma estrutura do formulário de registro da primeira aula, porém só precisaremos dos campos “login” e “senha” para verificar se realmente aquele usuário que está tentando logar está cadastrado no nosso banco de dados.

obs.: os comentários no código são iniciados por // ou

Nosso formulário de login ficará assim então:

login.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php // recomendo iniciar sempre a session no começo da página para que não haja problemas com headers depois, mas por enquanto vocês nem precisam prestar atenção nisso, depois que pegaram o script de login vão entender melhor do que se trata isso aqui. 
session_start();
session_cache_expire(30);
session_cache_limiter('private');
?>
<!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=iso-8859-1" />
<title>:: Login</title>
</head>
<body>
<h1>Login PHP</h1>
<?php // isso aqui vocês vão entender melhor depois que pegarem o script de login, então aconselho que nem percam tempo olhando isso agora
if ($_SESSION['result'] == 1) { // se a session de resultados tiver o valor 2...
	echo ("Erro: algum campo encontra-se vazio!"); // ele imprime algo negativo.
	}
if ($_SESSION['result'] == 2) { // se a session de resultados tiver o valor 2...
	echo ("Erro: usuário ou senha incorreto!"); // ele imprime algo negativo.
	}
?>
<form action="logando.php" method="post">
	Login:<br>
    <input name="login" type="text" /><br><!-- input é a tag de formatação de campo, ou seja, com ela você estará criando um campo com nome de login (indicado através do name) e o que for digitado dentro dele será do tipo texto. --> 
	Senha:<br> 
	<input name="senha" type="password" /><br><br><!-- o mesmo serve para o campo senha, a diferença é que o que for digitado nele será do tipo password, ou seja, no lugar de texto aparceção aquelas famosas bolinhas ou asteríscos. -->
	<input name="logar" type="submit" value="logar" /><br> <!-- aqui você cria um botão com a tag input indicando o tipo como submit, sendo assim, o que estiver dentro dos campos do formulário será submetido ao action do formulário (logando.php) através dele. No value você indica o texto que vai aparecer dentro do botão. -->
</form>  
</body>
</html>
<?php unset($_SESSION['result']); // retirando os valores da session  de resultados pra quando o usuário a atualizar a página o erro não continuar sendo impresso.?>

:: Script de login

O script de login consiste basicamente num algorítimo que pesquisa no banco de dados aquelas informações digitadas nos campos do formulário de login, geralmente: login e senha. Se alguma linha de registro no banco de dados for encotrada com o login e a senha requeridos um resultado positivo é exibido ao usuário ou então o mesmo é redirecionado para uma página exclusiva para usuários logados, caso contrário, exibi-se um resultado negativo ao mesmo.

Como foi indicado no formulário, o nosso script de login terá o nome de “logando”, aí vai ele:

logando.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
 
session_start();  // através dessa função podemos iniciar a manipulação de session que são variáveis globais,ou seja, a session é uma varíavel que pode ser utilizada em blocos de código distintos, por exemplo: aqui eu digo que a session de login é igual a "User", lá na minha página principal eu utilizo a $_session['login'] e ela terá esse valor que eu dei (User).
session_cache_expire(30); // define o limite de tempo do cache em 30 minutos 
session_cache_limiter('private'); // defini o limitador do cache para 'private'.
session_register('result');  // através dessa função registramos a session result que vai armazenar os resultados da nossa pesquisa.
 
//conectando com o banco de dados
$dbhost = "enderecodohost.com"; 
$dbuser = "tivira"; 
$dbsenha = "tivira"; 
$db = "logdaselva";
$conn = @mysql_connect($dbhost, $dbuser, $dbsenha) or die(mysql_error());
@mysql_select_db($db);
 
// agora vamos criar variáveis locais, também chamadas de variáveis de escopo
$login = $_POST['login']; // aqui estamos indicando aque a variável login ($login) recebe o que foi digitado no campo login do formulário através do método post.
$senha = md5($_POST['senha']); // o mesmo para senha, não esquecendo da incriptação md5.
 
if ((!$login) || (!$senha)) { // se não a variável login ou senha não recebeu nada...
	$_SESSION['result'] = 1;	 // ...a session de resultados recebe o valor 1...
	header("location:login.php"); // ...e redireciona o usuário para a página de login novamente, aonde será exibido ao mesmo um resultado negativo.
}else{ //caso contrário..
	$pesquisa = mysql_query("SELECT * FROM registros WHERE login = '$login' AND senha = '$senha'"); // aqui executamos na variável pesquisa ($pesquisa) uma query que seleciona todos os registros do nosso banco aonde o login e a senha são iguais ao que foi digitado pelo usuário.
	if (mysql_num_rows($pesquisa) > 0) { // se o número linhas de registro encontrados na variável for maior que 0, ou seja, se existir registro no banco com esse login e senha..
		session_register('login'); // criamos uma session login
		$_SESSION['login'] = $login; // indicamos seu valor, ela será igual ao valor do campo login digitado no formulário.
		header("location:principal.php"); // redirecionamos o usuário para uma página principal que validará o login do usuário.
	}else{ // caso contrário
		$_SESSION['result'] = 2; // indicamos o valor "2" para a variável de resultado..
		header("location:login.php"); // e redirecionamos o usuário para a página de login.
		} // fecha else
	} // fecha else
 
?>

Aula 03 - Validando o login

Validar um login consiste básicamente em perguntar na página principal se uma determinada session (a responsável pelo login) está setada, ou seja, se ela possui algum valor.

principal.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php 
session_start(); // iniciando a session
session_cache_expire(30);
session_cache_limiter('private');
?>
<!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=iso-8859-1" />
<title>Principal</title>
</head>
<body>
<?php 
if (isset($_SESSION['login'])) { // se a ssssion login estiver setada..
	echo ("Bem vindo ".$_SESSION['login']."!"); // ele imprime um "bem vindo" com o nome do usuário.
}else{ // caso contrário..
	header("location:login.php"); // ele manda o usuário de volta pra página de login.
}
?>
</body>
</html>

Aqui vou encerrando nossas aulas à respeito do sistema de login, espero ter ajudado e esclarecido alguma coisa à vocês. Prometo que logo voltarei com novidades, grande abraço !
Dúvidas ?
Erros ?
Postem sem medo, obrigado! =)

Tyasske.com

Escrito em Aleatórios, Dicas, Acessibilidade, Tecnologia, Utilitários, JavaScript, HTML por Rodrigo Waltenberg em 01 de Dezembro de 2007

Blog do tyasskeJa faz um tempinho que estou ligado nos padrões web. Procuro sempre aprender uma coisa ou outra e estar sempre nos conformes. Como ainda sou aprendiz, dou umas mancadas (e levo bronca do Luã xD) mas normalmente conserto depois.

Além das dicas que o Luã me da, tenho alguns sites que sempre me ajudam nos momentos mais difíceis. Um brushzinho aqui, uma fontezinha ali, um framework acolá… E de uns dias pra ca, tem um blog que ta sendo uma baita duma mão na roda.

Este é um post de utilidade pública… e digo utilidade porque eu nunca vi um site tão útil pra alguem que trabalha com web quanto o blog do Tyasske. Ele segue à risca os Padrões Web e ainda ajuda o pessoal com um bocado de dicas sobre tudo relacionado a webdevelopment.
Eu assinei o feed e procuro comentar nos posts mais úteis. Recomendo.