Sistema de Login e Senha Criptografados - Parte 02 | André Buzzo
contato@andrebuzzo.com.br | (11) 9-8551-3500 | facebook | skype:andrebuzzowebdesign

Sistema de Login e Senha Criptografados – Parte 02

Publicado na categoria Banco de Scripts com 89.828 visualizações e 70 comentários

Fala Pessoas!

Sem muita demora e delongas, aqui está a segunda parte do tutorial sobre o Sistema de Login e Senha Criptografados!

Sistema de Login e Senha Criptografados - Parte 02 - Recuperando os dados

 

O que vamos fazer aqui?

Bom, uma das exigências do Cliente X era que, “caso o usuário perca seus dados, deve ser dada a opção e ferramentas para que o mesmo possa cadastrar novos dados, sempre que necessário” … Sendo assim, precisávamos inserir tais ferramentas no sistema para que nosso usuário, depois de cadastrado, pudesse voltar a ter acesso sem a necessidade de preencher o formulário novamente com seus dados.

Para isso, criamos um link no rodapé do arquivo “index” que está na pasta “exclusivo” do nosso sistema. Portanto o arquivo “recuperaDados.php” segue abaixo:

recuperaDados.php

<!DOCTYPE HTML>

<html lang="br" class="no-js">

<head>

<meta charset="utf-8">
<title>Sistema de Login e Senha Criptografados</title>
<link href="../style.css" rel="stylesheet" />

</head>

<body>

<div id="conteudo">

<h1>Sistema de login e senha criptografados - Recuperação de Dados</h1>

<div class="borda"></div>

<div class="clear"></div>

<!-- Formulário para acesso -->
<p>Para recuperar seus dados, por favor, preencha o formulário abaixo!<p>

<!-- A lógica que empregaremos aqui é a seguinte: Vamos pedir o endereço de email e vamos conferir se o mesmo está cadastrado no sistema.
Se o endereço estiver cadastrado, enviaremos um e-mail para que ele possa acessar uma nova página e informar novamente seus dados para acessar o Conteúdo exclusivo dele! -->

<form method="post" action="enviaInformacoes.php" id="recuperaDados">
<fieldset>
<legend>Recuperação de Dados</legend>
<label for="nomeUsuario">Informe o e-mail:</label>
<input type="text" name="email" id="email" />
<div class="clear"></div>
<input type="submit" value="Recuperar Dados" />

</fieldset>
</form>

<div class="borda"></div>

</div>

</body>

</html>

Acho que o formulário se explica sozinho correto? Ok, então vamos ver o que o arquivo “enviaInformacoes.php” tem a nos mostrar logo abaixo:

enviaInformacoes.php

<!DOCTYPE HTML>

<html lang="br" class="no-js">

<head>

<meta charset="utf-8">
<title>Sistema de Login e Senha Criptografados</title>
<link href="../style.css" rel="stylesheet" />

</head>

<body>

<div id="conteudo">

<h1>Sistema de login e senha criptografados - Verificando Informações</h1>

<div class="borda"></div>

<!-- Recebendo e gravando os dados -->
<?php

include "conexao.php";
//Praticamente faço as mesmas validações que fizemos para o cadastrado do usuário no banco de dados.
//Recebendo os dados e tratando os mesmos para inserção no banco
$recebeEmail = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$confereEmail = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_MAGIC_QUOTES);

//Nesse if, faço uma conferência em relação ao e-mail informado. Se não for informado nenhum, retorno a mensagem para que o usuário informe corretamente
if ($recebeEmail == NULL ) {
echo "<p>O endereço de e-mail precisa ser informado!";
echo "<p><a href='javascript:history.back();'>Voltar</a></p>";
return false;
}

//Aqui faço a segunda parte da verificação: vejo se no endereço de e-mail foi utilizado algum caractere especial
//Isso serve para evitar uma possível invasão sql no banco de dados, possibilitando assim a proteção e integridade dos dados
//Nesse caso, eu comparo os nomes. Se forem iguais, após passarem pelos filtros, eu inicio a criptografia. Se não forem, peço que volte à página anterior
else if ($recebeEmail != $confereEmail) {
echo "<p>Você informou o seguinte endereço de e-mail: <strong>$confereEmail</strong> .</p>";
echo "<p>Por favor, não utilize caracteres especiais (tais como aspas simples ou duplas e/ou barras!) no campo <strong>Informe o E-mail</strong>.</p>";
echo "<p><a href='javascript:history.back();'>Volte</a> para a página anterior e tente novamente! Obrigado!</p>";
return false;

} else {

/*
Agora vamos consultar no banco de dados para ver se existe realmente esse cadastro
Vamos verificar ambos os dados: E-mail e ainda se o campo "ATIVO" está setado como SIM
*/

$consultaInformacoes = mysql_query("SELECT * FROM usuario WHERE email = '$confereEmail' AND ativo = 'sim'") or die (mysql_error());
$verificaInformacoes = mysql_num_rows($consultaInformacoes);

//Aqui vou verificar se houve resultado positivo na pesquisa
if($verificaInformacoes == 1){

echo "<p>O e-mail informado (<strong><em>$confereEmail</em></strong>) consta de nossa base de dados.</p>
<p>Acesse sua caixa de entrada. Se a mensagem não for encontrada, verifique se não está na caixa de spam!</p>";

//Aqui vou enviar o e-mail com os dados para que o cliente faça o acesso à página
//O e-mail será enviado utilizando o PHPMailer
//Para executar essa função, é necessário que o sistema esteja hospedado em algum servidor web | SERVIDORES LOCAIS NÃO ENVIAM E-MAIL
include ("phpmailer/class.phpmailer.php");

$headers = "Content-type:text/html; charset=utf-8";
$headers = "From: seuEmail@seuDominio.com.br";

$destino = $recebeEmail;
$de = utf8_decode("Contato - André Buzzo");
$assunto = "..:: Recuperação de dados ::..";
$html = utf8_decode('
<hr />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Recuperação de Dados</title>
<style type="text/css">
<!--
.style1 {
font-family: "Trebuchet MS", Arial;
font-size: 16px;
color: #FFFFFF;
}
.style4 {
font-family: "Trebuchet MS", Arial;
font-size: 12px;
color: #333333;
font-weight: bold;
}
-->
</style></head>

<body>
<form method="post" action="http://seuDominio.com.br/exclusivo/atualizaInformacoes.php">
<fieldset>
<legend>Recuperação de Dados de Acesso</legend>
<label for="informacao">Para recuperar seus dados, clique no botão "Atualizar Meus Dados"!</label>
<input type="hidden" name="confereEmail" value="'.$confereEmail.'" /><br />
<input type="submit" value="Atualizar Meus Dados" />
</fieldset>
</form>
</body>
</html>

<hr />');

$mail = new PHPMailer(); // criando a nova classe - instnciando

$mail->IsSMTP = ("smtp");
$mail->Mailer = ("mail");
$mail->SMTPSecure = "ssl";
$mail->SMTPAuth = true;
//$mail->CharSet = 'utf-8';
$mail->Username = ("seuEmail@seuDominio.com.br");
$mail->Password = ("suaSenha");
$mail->Sender = ("seuEmail@seuDominio.com.br");
$mail->From = ("seuEmail@seuDominio.com.br");
$mail->FromName = $de;
$mail->AddAddress ($destino);
//$mail->Addbcc ($para);
$mail->AddReplyTo("$email","$nome");
$mail->Wordwrap = 50;
$mail->Subject = ($assunto);
$mail->IsHTML = (true);
$texto = "body";

$mail->Body = $html;
$mail->AltBody =$texto;

if($mail->Send($destino, "Recuperação de dados!", $html, $headers)){
echo "<p>Mensagem enviada com sucesso! Obrigado!";
} else {echo "Houve um problema";}

} else {
//Se nenhuma das confirmações acima foram efetuadas, mais uma vez, retorno uma mensagem de erro ao usuário.
echo "<p>Endereço de e-mail informado não consta em nossa base de dados. Por favor, <a href='javascript:history.back();'>volte</a> e tente novamente!</p>";

}

}
?>

</div>

</body>

</html>

O arquivo acima está comentado para que seu entendimento seja pleno. A classe PHPMailer pode ser baixada nesse endereço!

Quando o usuário acessar a caixa de e-mail dele, ele verá uma mensagem que o informará da necessidade se clicar em um link. Ao clicar nele, ele será enviado para uma página chamada “atualizaInformacoes.php”, na qual será realizada uma consulta novamente para saber se o e-mail que está sendo informado realmente consta em nossa base de dados.

Vamos fazer outra consulta e validação, pois precisamos garantir o mínimo de segurança do nosso sistema. A página segue abaixo:

atualizaInformacoes.php

<!DOCTYPE HTML>

<html lang="br" class="no-js">

<head>

<meta charset="utf-8">
<title>Sistema de Login e Senha Criptografados</title>
<link href="../style.css" rel="stylesheet" />

</head>

<body>

<div id="conteudo">

<h1>Sistema de login e senha criptografados - Verificando Informações</h1>

<div class="borda"></div>

<!-- Recebendo e gravando os dados -->
<?php

include "conexao.php";
//Praticamente faço as mesmas validações que fizemos para o cadastrado do usuário no banco de dados.
//Recebendo os dados e tratando os mesmos para inserção no banco
$recebeEmail = filter_input(INPUT_POST, 'confereEmail', FILTER_VALIDATE_EMAIL);
$confereEmail = filter_input(INPUT_POST, 'confereEmail', FILTER_SANITIZE_MAGIC_QUOTES);

//Nesse if, faço uma conferência em relação ao e-mail informado. Se não for informado nenhum, retorno a mensagem para que o usuário informe corretamente
if ($recebeEmail == NULL ) {
echo "<p>Nenhum endereço de e-mail foi informado!";
echo "<p><a href='javascript:history.back();'>Voltar</a></p>";
return false;
}

//Aqui faço a segunda parte da verificação: vejo se no endereço de e-mail foi utilizado algum caractere especial
//Isso serve para evitar uma possível invasão sql no banco de dados, possibilitando assim a proteção e integridade dos dados
//Nesse caso, eu comparo os nomes. Se forem iguais, após passarem pelos filtros, eu inicio a criptografia. Se não forem, peço que volte à página anterior
else if ($recebeEmail != $confereEmail) {
echo "<p>Você informou o seguinte endereço de e-mail: <strong>$confereEmail</strong> .</p>";
echo "<p>Por favor, não utilize caracteres especiais (tais como aspas simples ou duplas e/ou barras!) no campo <strong>Informe o E-mail</strong>.</p>";
echo "<p><a href='javascript:history.back();'>Volte</a> para a página anterior e tente novamente! Obrigado!</p>";
return false;

} else {

/*
Agora vamos consultar no banco de dados para ver se existe realmente esse cadastro
Vamos verificar ambos os dados: E-mail e ainda se o campo "ATIVO" está setado como SIM
*/

$consultaInformacoes = mysql_query("SELECT * FROM usuario WHERE email = '$confereEmail' AND ativo = 'sim'") or die (mysql_error());
$verificaInformacoes = mysql_num_rows($consultaInformacoes);

//Aqui vou verificar se houve resultado positivo na pesquisa
if($verificaInformacoes == 1){

echo "<p>O e-mail informado (<strong><em>$confereEmail</em></strong>) consta de nossa base de dados.</p>
<p>Preencha os dados abaixo para obter acesso ao <strong>Conteúdo Exclusivo!</strong></p>";

echo "
<form method='post' action='atualizaDados.php'>
<fieldset>
<legend>Preencha os dados para obter acesso ao Conteúdo Exclusivo!</legend>
<label for='nomeUsuario'>Nome de Usuário:</label>
<input type='text' name='nomeUsuario' id='nomeUsuario' />
<div class='clear'></div>
<label for='senha'>Informe a senha:</label>
<input type='password' name='senha' id='senha' />
<div class='clear'></div>
<input type='hidden' name='emailControle' value='".$confereEmail."' />
<input type='submit' value='Atualizar informações' />
</fieldset>
</form>";

}
}
?>

</div>

</body>

</html>

Se os dados informados baterem, exibimos outro formulário para que o usuário novamente faça o cadastro dos seus dados, e garanta assim, um novo acesso ao sistema. Simplesmente pedimos os dados novamente e atualizamos a tabela onde o e-mail cadastrado seja igual ao e-mail que acessou o sistema.

E é lógico, faremos toda a validação, praticamente igual ao ato de cadastrar o usuário no banco.

atualizaDados.php

<!DOCTYPE HTML>

<html lang="br" class="no-js">

<head>

<meta charset="utf-8">
<title>Sistema de Login e Senha Criptografados</title>
<link href="../style.css" rel="stylesheet" />

</head>

<body>

<div id="conteudo">

<h1>Sistema de login e senha criptografados</h1>

<div class="borda"></div>

<!-- Recebendo e gravando os dados -->
<?php

include "conexao.php";

//URL para a qual o usuário será enviado após ter preenchido todos os campos corretamente
$urlAcesso = "index.php";

//Recebendo os dados e tratando os mesmos para inserção no banco
$recebeNomeUsuario = filter_input(INPUT_POST, 'nomeUsuario', FILTER_SANITIZE_SPECIAL_CHARS);
$confereNomeUsuario = filter_input(INPUT_POST, 'nomeUsuario', FILTER_SANITIZE_MAGIC_QUOTES);
$recebeEmail = filter_input(INPUT_POST, 'emailControle', FILTER_VALIDATE_EMAIL);
$recebeSenha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_SPECIAL_CHARS);

//Nesse if, faço uma conferência em relação ao e-mail informado; se não for um e-mail validado pelo filtro, ele retornará a mensagem abaixo.
//Se o email for válido, ele passa para a segunda parte da verificação
if ($recebeEmail == NULL ) {
echo "<p>Retorne e digite um e-mail válido por favor!";
echo "<p><a href='javascript:history.back();'>Voltar</a></p>";
return false;
}

//Nesse if, faço uma conferência em relação à senha informada. Se não for informada nenhuma, retorno a mensagem para que o usuário informe algo!
if ($recebeSenha == NULL ) {
echo "<p>Retorne e informe uma senha por favor!";
echo "<p><a href='javascript:history.back();'>Voltar</a></p>";
return false;
}

//Aqui faço a segunda parte da verificação: vejo se no nome de usuário foi utilizado algum caractere especial
//Isso serve para evitar uma possível invasão sql no banco de dados, possibilitando assim a proteção e integridade dos dados
//Nesse caso, eu comparo os nomes. Se forem iguais, após passarem pelos filtros, eu inicio a criptografia. Se não forem, peço que volte à página anterior
else if ($confereNomeUsuario != $recebeNomeUsuario) {
echo "<p>Você informou o seguinte Nome de Usuário: <strong>$recebeNomeUsuario</strong> .</p>";
echo "<p>Por favor, não utilize caracteres especiais (tais como aspas simples ou duplas, assim como barras!) no campo <strong>Nome de Usuário</strong>.</p>";
echo "<p><a href='javascript:history.back();'>Volte</a> para a página anterior e tente novamente! Obrigado!</p>";
return false;

} else {

//Aqui vou agora, criptografar as informações antes de enviá-las ao banco de dados
echo "<h3>Atualizando informações em nosso banco de dados</h3>";

//Aqui vamos criar a função que vai criptografar os dados.
//Serão necessários criptografar apenas o endereço de e-mail e a senha informada

//Função para criptografar a senha
function criptoSenha($criptoSenha){
return sha1(md5($criptoSenha));
}
//Função para criptografar o e-mail
function criptoNomeUsuario($criptoNomeUsuario){
return sha1(md5($criptoNomeUsuario));
}
//Aqui realizo a criptografia do endereço de e-mail
$criptoNomeUsuario = criptoNomeUsuario(filter_input(INPUT_POST, 'nomeUsuario', FILTER_SANITIZE_MAGIC_QUOTES));
//Aqui realizo a criptografia da senha informada do usuário
$criptoSenha = criptoSenha(filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_SPECIAL_CHARS));

//Agora vamos atualizar os dados no banco
$atualizaDados = mysql_query("UPDATE usuario SET userlogin = '$criptoNomeUsuario', passlogin = 'criptoSenha' WHERE email = '$recebeEmail'") or die (mysql_error());

echo "<p>Seu cadastro foi atualizado com sucesso!</p>";
echo "<p>Aguarde enquanto lhe encaminhamos para a página de acesso ao <strong>Conteúdo Exclusivo</strong>!";
echo "<meta http-equiv=\"refresh\" content=\"5;URL=".$urlAcesso."\">";
}

?>

</div>

</body>

</html>

Bom, espero que o sistema tenha agradado a todos, e que possam fazer bom uso dele. Espero também ter dado novos horizontes sobre o que é possível se fazer com esse script.

Bons estudos e até a próxima!

Abraços!


–>

Voltar à página anterior!

  • Williams

    Olá André muito bom mas como ainda estou iniciando, fico pouco confuso , seria pedir muito se vc fizesse uma pasta raiz e colocasse todos scripts de forma a ser usada dai ficaria mais facil enteder zip e colocasse pra downloads para ser usada em um server local . obrigado valeu …

    • Fala Willians!

      Os scripts estão todos para download no link “Banco de Scripts”. Eu não vou colocar eles numa pasta para que você baixe pois, ao final dos dois artigos, você terá o conhecimento de como funcionam ambos.

      Sei que existe uma certa dificuldade para quem está iniciando no esquema, mas esse tipo de dificuldade se torna a sua experiência. Se eu fizer e entregar – ainda mais – de mão beijada pra ti, não tô contribuindo pro seu crescimento e sim, para seu comodismo.

      Então compadre, mete a cara que você consegue!

      Abraços!

  • frederico87

    Amigo parabéns pelo código, consegui fazer ele funcionar, porém estou com um probleminha ainda, ao tentar recuperar a senha o email até chega, no entanto ao clickar em atualizar meus dados ele não vai pra página de atualização de dados…oq deve ser ??? muito grato se ajudar!!! sei q deve ser simples…Mas na luta ainda…kkk

    • Fala Frederico!

      Então cara … sem mais informações eu não consigo te ajudar. Você está testando isso no seu computador ou na sua hospedagem?

      Abraços!

      • frederico

        Agradecido por responder amigo,
        então, estou usando servidor online da homehost…:)

        • Então compadre!

          Precisa ver com sua hospedagem o porque não está disparando o email. Pode ser alguma configuração do servidor, pode ser a versão do PHPMailer – acho que eu uso o PHPMailer nesse exemplo né – e inclusive a versão do PHP do servidor .. aí fica mais fácil se você verificar com o suporte do seu prestador de serviços!

          Abraços e depois me diga se vc conseguiu e como conseguiu resolver ok?

          Até!

  • Mande pro contato@andrebuzzo.com.br

    Abraços!

  • Fala Joannes.

    Cara, me passa o que realmente está acontecendo contigo que eu mando um orçamento para desenvolver uma solução pra ti.

    Abraços!

  • Malone Castro

    PARABÉNS ANDRÉ BUZZO PELA INICIATIVA,
    BEM INTELIGENTE E ATÉ PEDAGOGICA, PRECISAREI MUITO DESTE
    TUTORIAL, SE TODOS OS PUBLICADORES FOSSEM IGUAL A VOCÊ
    FACILITARIA A VIDA DE MUITOS APRENDIZES COMO EU!
    GRANDE ABRAÇO AMIGO

    • ôôôôôôôôôôôôôôôôôôôôôôôôôôôôô Malone!

      Obrigado pelas palavras meu velho. Fico feliz em saber que pude lhe ajudar.

      Abraços e até mais compadre!

  • Fala Joannes.

    Compadre, tem como você me enviar um e-mail com suas necessidades? Não se ofenda, mas do jeito que tá escrito aí tá osso pra entender meu velho … coloque bonitinho no corpo da mensagem a sua real necessidade e vamos ver o que podemos fazer.

    Abraços!

    • Joannes Waquim

      Boa noite tudo bem, eu havia feito o comentario no trabalho onde o tempo é curto, até gora tentando mais nao estou conseguindo, meu e-mail é joanneswaquim@gmail.com

      preciso fazer um sistema de login com niveis de acesso funciona assim,

      1 nivel para adm em pode adicionar usuarios e definir niveis, e ao mestempo ela pode ir para outras paginas ja que ja esta logada.

      1 nivel para o moderador em que irá para apgina especifica

      1 para outro que seria o usurio comum.

      mas alguns codigos que temho testado nao funciona pra mim nao sei por que!

      ja tenho as paginas prontas falta eu fazer somente isso, preciso de bastante ajuda, nunca tive aulas de php, estou pegando na raça, foruns, tutoriais em toutubes, peço sua ajuda

      o tipo de pagina adm esta em anexo, onde cadastra usuarios

      • Fala Joannes!

        Cara, posso mandar um orçamento para o desenvolvimento nesse e-mail que você colocou aqui?

        Abraços!

        • Joannes Waquim

          desculpas em não ter respondido, não foi por má educação, me desculpe mesmo, bom eu consegui, obrigado, tenho um probllema eh com outra coisa, relacionado a ordenar colunas.

          • Olá Joannes!

            Em ordenar você quer dizer “apresentar os dados”? Colocá-los em “ordem alfabética”, por exemplo? Se positivo, procure por MySql VIEWS … poderá lhe ajudar!

            Abraços!

  • vaniomartins

    andre boa tarde nao consigo configurar o php mailler quando entro em esqueci minha senha em recumpera dados nenhum email chega na minha caixa postal e nem no span vc sabe me dizer como fazer para configurar?

    • Você está usando qual versão do PHP Mailer? A 4 ou a 5? O servidor que você usa … é local – na sua máquina – ou o site está hospedado em alguma empresa?

      Verifique a versão do PHP que está no servidor. Ela precisa bater com a versão do PHP Mailer. E a configuração do PHPMailer é simples de fazer cara. Mas se não estiver em algum servidor web, ele não envia e-mails mesmo.

      E mais uma vez, eu entendo que você não me passa informações. Siga certinho o que eu proponho no tuturial cara. As pessoas que tem algum problema, são resolvidos via comentário.

      No seu caso, é o primeiro que pego informando que não sabe configurar o PHPMailer. Mas eu preciso de info véio.

      Abraços!

      • vaniomartins

        estou usando via web e o meu é do uolhost sera que tem algum poblema? e o php mailler eu nao sei onde alterar por isso eu estou com duvida

  • Obrigado pelo apoio

  • Jamerson

    Olá André, muito obrigado pela atenção. Eu preciso do index.html, é a página inicial da minha aplicação.

    • Jamerson, me explique uma coisa: na pasta raiz do seu site você tem o index.html e o index.php para efetuar o login? É isso?

      Se positivo, coloque seu sistema dentro de uma pasta … aí no formulário, no action dele, você insere o “nomeDaPasta/verificaAcesso.php” e deixa o index.php dentro de outra … Se você mantiver as duas index dentro da raiz, vai dar pau….

      Abraços!

  • Jamerson

    André consegui resolver, estava faltando uma aspas simples. Por gentileza me tire uma dúvida: como poderia fazer para bloquear o acesso direto a minha página “index.html” ? Por que se eu digitar o link do site tipo: “www.meudominio.com” ele vai para o sistema de login, mas se eu digitar “www.meudominio.com/index.html” a página abre sem passar pelo login. Muito obrigado pela atenção!

    • Jamerson, pergunta: você tem a necessidade de manter o index.html?

      Senão, remova a página e fim de problemas!

      Abraços!

  • Jamerson

    Olá André parabéns por ter disponibilizado um sistema muito eficaz. Estou precisando de uma luz, a página enviaInformacoes.php só aparece o cabeçalho, o restante da página fica em branco. Muito obrigado pela atenção!

    • Fala Jamerson!

      Cara, desculpa pela demora em te responder … mas, fica complicado de lhe dar uma ajuda sem saber como está seu arquivo … se ele apenas mostra o cabeçalho, alguma coisa não está “fechada”, ou algum loop do PHP está dando problema … sei que não ajuda muito, mas …

      Abraços!

  • Juarez

    Grande André!

    Muito obrigado!

    Rodou perfeitamente!

    Abração cara!

  • Juarez

    Primeiramente parabenizo pelo maravilhoso script!

    Também por disponibilizar e por responder às perguntas!

    Parabéns!

    Vamos lá, sou bastante leigo nesse tema. Gostaria que me ajudasse com um pequeno detalhe!

    Eu gostaria que informasse um comando pra não aceitar repetições no nome de usuário. Tentei diversos mas não obtive sucesso.

    Da forma como está, alguém cadastra o nome de usuário “jose” e depois outro cadastra novamente “jose” com outro email, ele aceita. E dessa forma quando o primeiro “jose” vai logar, ele não consegue, diz que usuário ou senha estão errados.

    Só o último “jose” que vai conseguir acessar.

    Mesmo que sejam emails diferentes, somente o último consegue.

    Desde já agradeço e aguardo uma ajuda.

    Abraço.

    • Fala Juarez!

      Vamos lá: para que você restrinja a duplicação de cadastro de nomes de usuários, basta você “duplicar” a regra que bloqueia o e-mail! Só precisa fazer a mesma conferência no banco de dados usando as informações provindas de “nome de usuário” …

      Abraços!

  • André Silva

    Então xará eu criei um banco de dados e depois exportei este o que você criou os ‘usuários’ dai depois eu arrumei no config para ele se conectar dai agora estou em duvida por causa deste erro eu uso hospedagem gratuita

    • Pode ser por conta disso então André … hospedagem gratuita sempre dá um problema aqui e outro ali …

  • André da Silva Santos

    Olá André xara , bom estou com este erro , Access denied for user ‘root’@’10.1.2.34’ (using password: NO) . Pensei que era erro na conexão mais eu arrumei certo mais fica só dando este erro estou afim de criar um web site de login e senha só para a galera que usa meu fórum tenha que ir la pegar a senha .. Se puder me ajuda agradeço

    • Fala Xará!

      Véio, você criou e “relacionou” usuários para o banco de dados no servidor?

      Abraços!

  • max

    cara fisso ta ótimo so tou tendo um quebra de cabeça em recuperar senha todo processo que eu faço stmp sempre aparece ouve um erro =/

    • Fala Max!

      Compadre, você está usando um servidor web ou trabalhando no “localhost”?

      Se for no localhost, não rola o envio de e-mails ok?

      Abraços!

  • Hamilton

    Parabens !! Muito bom…

    Funcionou muito bem, “Porem” quando recebo o e-mail, o botão chega como texto, não dando a opção de clicar… Alguma sugestão ?

    • Fala Hamilton!

      Cara… onde você está “lendo” esse e-mail? Navegador ou cliente de email?

      Abraços!

  • Elison

    Olá André, parabéns pelo conteudo.

    Queria tirar uma duvida cara, apareceu isso

    Notice: Undefined variable: email in …\exclusivo\enviaInformacoes.php on line 125

    nessa linha
    $mail->AddReplyTo(“$email”,”$nome”);

    o que pode ser?

    Obrigado desde já.

    • Fala Elison!

      O “erro” quer dizer que a variável “$email” não foi inicializada … ela não existe.

      Verifique seu código para confirmar o recebimento do valor …

      Abraços!

  • Thiago

    André estou tendo problemas na hora de recuperar a senha ele me da uma mensagem de que “Houve um Problema” e nao estou conseguindo resolver.

    [http://][cripta].[hospedamaster].[com].[br]/

    Obrigado

    • Fala Thiago!

      Cara … está apresentando algum problema no PHPMailer. Veja se a versão que subiu no seu servidor é compatível com a versão do PHP que roda lá. Ou se a configuração do script que enviará o e-mail está correta.

      Ou, onde está no script a seguinte linha: else {echo "Houve um problema";}, altere para else { $mail->ErrorInfo;} e veja qual o problema que o PHPMailer vai lhe retornar.

      Abraços!

  • Felipe Silva

    André você poderia fazer esse tutor em video aulas? Vlw e parabens tutor muito bom

    • Fala Felipe!

      Cara… no momento eu não tenho condições de “tempo hábil” para transformar o tutorial em vídeo meu velho …

      Mas prometo que pro ano que vem eu volto com as vídeo aulas. Esse ano foi complicado.

      Obrigado pelas palavras e espero que o sistema tenha lhe ajudado de alguma maneira. Forte abraço!

      Até mais!

  • Bruno Nicoletti
    • Brunão, suas dúvidas estão sendo retiradas pelo Fórum!

      Abraços!

  • Bruno Nicoletti

    Estou usando servidor mesmo… o problema não é que não chega o email, mas sim que chega faltando a tag sendo que ela consta no script..

    Abraços!

  • Bruno Nicoletti

    Bom Dia, primeiro muito obrigado pelo código.
    Mas uma dúvida quando estou enviando o email para o cliente, o email que chega não está contendo a tag form portanto não acessa a pag do site para atualizar os dados da senha… como posso resolver?

    • Fala Bruno!

      Amigo, você está tentando mandar o e-mail usando um “servidor web” ou algum aplicativo, tipo wamp server, vertrigo, easy php?

      Se for por algum aplicativo, ele não manda e-mails mesmo ok? É necessário um servidor de hospedagem para efetuar esses disparos.

      Abraços!

  • Lucas Tenorio

    esse comando

    $msg = $_REQUEST[“msg”];

    • Fala Lucas!

      Só verifique se ele promove a “restrição” de acesso à página!

      Abraços!

  • Lucas Tenorio

    Obrigado! e o outro erro era esse comando:

    dps q eu tirei deu td certo, Obrigado!

  • Lucas Tenorio

    Olá, Você Poderia Hospedar todos os arquivos compactados em um site de host (4Shared, Media Fire, etc…) por que aqui fica dano erros na linha 45 e 3

    aqui esta oq aparede:

    Warning: include(conexao.php): failed to open stream: No such file or directory in C:xampphtdocslogin_teste2exclusivovalidaAcesso.php on line 3

    Warning: include(): Failed opening ‘conexao.php’ for inclusion (include_path=’.;C:xamppphpPEAR’) in C:xampphtdocslogin_teste2exclusivovalidaAcesso.php on line 3

    Notice: Undefined index: msg in C:xampphtdocslogin_teste2exclusivovalidaAcesso.php on line 4

    Warning: include(conexao.php): failed to open stream: No such file or directory in C:xampphtdocslogin_teste2exclusivovalidaAcesso.php on line 45

    Warning: include(): Failed opening ‘conexao.php’ for inclusion (include_path=’.;C:xamppphpPEAR’) in C:xampphtdocslogin_teste2exclusivovalidaAcesso.php on line 45
    No database selected

    pf eu preciso mt desse sistema de login pf vc poderia mim ajudar?

    • Fala Lucas!

      Compadre, seu problema é bem fácil de resolver: olha essa linha – No such file or directory in.

      Informa que não existe o arquivo conexao.php que você está chamando.

      Veja direitinho onde ele está e se você está linkando ele corretamente!

      Abraços!

  • André Luiz

    Parabéns pelo ótimo Material, tenho uma dúvida sobre a criptografia.. é o seguinte:
    É interesasnte que os dados dos usuários cadastrados com CPF, CNPJ, email, Senha etc… sejam criptografados, como vc citou por uma possivel invasão..
    minha dúvida é a criptografamos o email.. mas se eu quiser exibir o email do usuário para conferencia, quando ele estiver logado por exemplo, se fizermos utilizando a função que você criou, seria impossivel?? correto?? teoricamente o md5 deveria ser irreversivel..

    é isso mesmo?? nesse caso deveriamos criptografar utilizando um tipo de criptografia que possamos reverter depois?? para poder exibir esses dados quando necessario?

    • Fala André Luiz, tudo em ordem?

      Então: houve uma discussão um tanto quanto acalorada sobre esse assunto no Mx Masters. Um usuário defendeu com unhas e dentes que o passado não é “criptografia” e sim um “hash”, já que não há a possibilidade de se recuperar os dados. Porém, algumas criptografias, pelo fato de serem reversíveis, são também mais “vulneráveis”.

      Dizem que também já conseguiram quebrar o MD5, mas foi necessário uma máquina altamente capaz para que isso acontecesse, e sendo assim, não seria algo muito viável. Dessa maneira, a pergunta de sua questão já está respondida por você mesmo.

      Não, não dá para fazer o que você quer usando o que eu “ofertei” aqui. E sim, para se exibir os dados que deseja, é necessária a utilização de um sistema que lhe deixe retornar os dados criptografados.

      E outra coisa Xará, o grau de segurança também é relativo.

      Forte abraço e obrigado pela participação!

      Até!

  • Axel Douglas

    Grande André, tudo bem?
    Primeiramente gostaria de parabeniza-lo pelo post! Muito bom e interessante. Além de ajudar nós, os pobres mortais. rs
    Desculpe o sumiço, ando meio apertado!
    Mas vamos ao que eu gostaria de saber hehe:
    Qual a diferença entre fazer um sistema de login utilizando cookie e session?
    Eu não entendo muito, mas a session não te dá mais controle na questão de sistemas de login? E o cokkie pode ser apagado pelo browser ou “evitado” pelo usuario.. isso pode ser possivel, não?
    Um abraço.
    Valew \o

  • Allkatéia

    Parabens pelo tutor, voce realmente deu um show.
    Eu tenho um site, http://www.coalizao.net e quero colocar nele um sistema delogin e senha com páginas restritas, porem, não quero abrir uma outra página para login e senha, quero coloca-los no canto superior direito e a pessoa vai lá digita os dados e se loga, se nãofor cadastrado, ele tem o link abaixo para se cadastrar.
    O link cadastre-se eu já tenho, falta só a opção de login e senha com as páginas do meu site como restritas. Pode me ajudar?

    • Fala Alkatéia!

      Compadre, o código fonte está aí. Basta “customizá-lo” para atender sua necessidade!

      Abraços!

  • JOAO VICTOR

    Aqui funcionou tudo certinho, somente a pagina de acesso exclusivo da dando offline, ela não abre

  • van

    Andre parabéns pelo post, está me ajudando bastante, gostei da lógica que tu usou para quando o usuário
    esquecer seus dados.
    A lógica que tu tá criptografando a senha é criptografa com md5 e depois criptografa
    a senha que já está criptografada com sha1? Sobre o que eu vi nenhum desses dois metodo pode ser desencriptografada.
    Com cookie é possivel fazer para que se o sistema ficar sem ser usado ele desloga automaticamente, tipo 5 ou 7 minuto sem o usuário usar, dai ele vai para a pagina
    de login.
    Obrigado
    Van

    • Van, obrigado pelo comentário! Fico feliz em saber que está lhe ajudando de alguma maneira.

      Sobre sua dúvida em relação à destruição do cookie, dá uma olhada nesse tópico: Cookies”>

      Ali diz como podemos fazer a destruição do cookie com tempo pré-definido.

      Forte abraço e bons estudos.

      Até mais!

  • arthur

    andré tem como vc ajudar + um pouco aqui amigo estou tendo algumas dificuldades no sistema de login
    Arthur

    • Fala Arthur!

      O que tá pegando meu velho?

      Abraços!

  • Matteus Sousa

    Graças à pessoas como vc, que leigos no assunto estão se aprofundando mais, buscando aperfeiçoas seus conhecimentos a cada dia. muito obrigado pelo tutorial André, que continue nos ajudando com suas dicas.

    • Matteus, eu que agradeço e muito a força de vontade e interesse de vocês. Isso que faz valer a pena!

      Forte abraço e seja sempre muito bem-vindo!

  • Sandro

    André, desculpe se ja tem, mas tem como você postar os arquivo deste sistema? fiz passo a passo, mas não esta dando muito certo… o banco de dados esta criado e a opção de vizualizar esta desabilitada… ate ae esta ok, o erro esta quando eu cadastro e ele vai para uma tela e nao faz mais nada….

    • Então você está com algum problema na hora de gerar os cookies cara.. se vc vai para uma tela que fica em branco, é sinal que a sessão não tá sendo registrada…

      Abraços!