Como criar um sistema simples de login ? (Aula 02 e 03)
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
Ja 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.
