Sistema de login seguro sem BD.
Por muito tempo fiz programas com autenticações “baratas” que não necessitavam de banco de dados, somente de uma tela de login para 1 responsável acessar.
Vou ensinar uma maneira bem prática e segura de implementação de login e senha para acesso de uma determinada página.
Login: amblog
Senha: testesha1
Clique aqui para ver o demo do login!
Vi muitos exemplos de programas que colocavam apenas o código padrão mas não davam a devida atenção a senha e o login visivelmente disponível no código. Não temos que reclamar, pois os códigos são somente para estudo, assim como o que vou postar aqui. Você poderá utilizá-lo em seu sistema com uma segurança maior.
Então para você que deseja colocar um sistema com um login simples em PHP, sem a utilização de banco de dados para acesso e com segurança no código fonte. Existe uma maneira muito simples e que funciona. Segue abaixo o antes e o depois, com a implementação do “Simpol Code Encriptator Tabajara”.
$nome = $_POST['input_nome'];
$senha = $_POST['input_senha'];
if ( ($nome == "joão") && ($senha == "maria") ) {
echo "logado";
} else {
echo "senha ou login errado";
}
Nova solução
$nome = sha1($_POST['input_nome']);
$senha = sha1($_POST['input_senha']);
if ( ($nome == "51ab07f2dcf95e7bee7e24a757257bcbc358d7c7") && ($senha == "6935ad4089ac55e552ed7582635a77ac2f8ae4b7") ) {
echo "logado";
} else {
echo "senha ou login errado";
}
O código é esse, a única diferença é que eu coloquei uma penca de números e letras no lugar da senha e do nome. Coloquei também a funcao sha1 na frente das variáveis.
Explicação desta penca de números e letras.
Sha1 é um hash de mão única. O que isso significa? Significa que você pode transformar qualquer valor, seja letras, números, letras e números, caracteres , etc, em um código com 40 letras e números totalmente “estranhos” e sem qualquer tipo de significado para você. O que significa “51ab07f2dcf95e7bee7e24a757257bcbc358d7c7″?
Provavelmente nada para você. Pois não existe função que retorne esse valor para seu valor inicial. Você só pode saber o que ele realmente significa, sabendo que valor ele era. Ficou confuso né, então mais uma explicação.
EX: sha1(’novo’) = “51ab07f2dcf95e7bee7e24a757257bcbc358d7c7″;
ahhh descobriu né!
Eu só sei que “6935ad4089ac55e552ed7582635a77ac2f8ae4sa” é a palavra “novo” porque se eu comparar “6935ad4089ac55e552ed7582635a77ac2f8ae4sa” com o valor de sha1(’novo’), será verdadeiro. Foi o que fizemos no login acima.
Comparamos o ( hash criado ) com o hash do ( valor que o cliente digitou ).
Podemos afirmar que : sha1(’novo’) é igual a “51ab07f2dcf95e7bee7e24a757257bcbc358d7c7″.
Em breve darei explicações e tirarei as dúvidas sobre hash e encriptação.
para testar os valores teste o código a seguir para montar seu login e senha.
<?php $nome = "XXXXXX"; //digite no lugar de xxxx o login que você deseja fazer o hash $nome = "XXXXXX"; //digite no lugar de xxxx a senha que você deseja fazer o hash echo 'nome: '.sha1($nome); // mostra o valor da variavel nome que você escolheu com o hash sha1 echo '<br />'; echo 'senha: '.sha1($senha); //mostra o valor da variavel senha que você escolheu com o hash sha1 ?>;
Se já quiserem discutir (pesquisar) sobre isso, vai as dicas.
Para hash ( mão única )
* sha1()
* md5()
e para criptografia ( criptografa e decriptografa )
base64_encode() / base64_decode()
O base64 você pode transformar um valor em outro e esse valor gerado pode ser revertido no valor inicial.
Abaixo segue o código completo da página de login, todo comentado para você iniciante não se perder.
index.php<?php ob_start(); // irá pegar todos os dados de saída e guardar em buffer para você poder redirecionar a página e não da erro no cabeçalho ?> <!DOCTYPE html> <html lang="pt-br"> <head> <title>Alexandre Mattos Blog | Login simples</title> <style> *{margin:0;padding:0;} body{padding:40px 0 0 0;} .nome, .senha {padding:5px;} .erro{background:#ff0000;color:#ffffff;padding:5px;} .alinhamento {margin:auto;width:300px;padding:5px; background:#fff;color:#0099ff;border:1px solid #ccc;} input[type=text], input[type=password]{border:2px solid #0099ff;padding:4px;} input[type=submit]{border:none;color:#ffffff;background:#0099ff;padding:5px;} </style> </head> <body> <?php if (!$_POST) { // se foi postado (se o cliente clicou no botão enviar) // veja que o action é a página que fará a verificação, que no caso é esta mesmo. echo ' <div class="alinhamento"> <h1>Login</h1> <form method="post" action="index.php"> <div class="nome">NOME: <input type="text" name="input_nome" /></div> <div class="senha">SENHA: <input type="password" name="input_senha" /></div> <input type="submit" value="entrar" /> </form> </div> '; }else{ //resgata os valores inseridos pelo cliente $nome = sha1($_POST['input_nome']); // valor passado pelo metodo post, nome do campo "input_nome" $senha = sha1($_POST['input_senha']); // valor passado pelo metodo post, nome do campo "input_senha" //nomes corretos //nome "amblog" //senha "testesha1" // o codigo abaixo significa, se o $nome = "amblog" e $senha = testesha1 faça if ( ($nome == "51ab07f2dcf95e7bee7e24a757257bcbc358d7c7") && ($senha == "6935ad4089ac55e552ed7582635a77ac2f8ae4b7") ) { header("Location: logado.php"); // redirecionar para página logado.php } else { //senão (quer dizer se não for igual a comparação acima) faça //escreve o campo de login novamente para o cliente digitar o login e a senha e mostra uma div informando que tem campo errado. echo ' <div class="alinhamento"> <h1>Login</h1> <div class="erro">Login e/ou senha errado(s)</div> <form method="post" action="index.php"> <div class="nome">NOME: <input type="text" name="input_nome" /></div> <div class="senha">SENHA: <input type="password" name="input_senha" /></div> <input type="submit" value="entrar" /> </form> </div> '; } // fim if comparação } // fim if se foi enviado ?> </body> </html>Um abraço e bom estudo!
1 Comentário to Sistema de login seguro sem BD.
Deixar um comentário
Pesquisar no Blog
Tópicos recentes
Calendário de Posts
Arquivos
- fevereiro 2010 (1)
- dezembro 2009 (14)

poxa, ke ajudonaa!! amnha eu tenho prova de php… preciso tira 70, mas eu estava viajandando nesse troço, super facil assim, pusq agentee num aprende desse jeito… pusq tem q ser da maneira mais chataa?!
valeu! Moço, num para naum, continua postando!!