Jump to content


Photo

Confirmação Do Cadastro


  • Faça o login para participar
21 replies to this topic

#1 _tHeFlAsH_

_tHeFlAsH_

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 08/10/2004, 17:33

E ae pessoal ... eu vi várias dúvidas assim no fórum ... vou mostrar como faz para quando a pessoa se cadastrar no seu site, ela tenha que confirmar por e-mail e somente após confirmar ela poderá usar seu login e senha.

1 - Vamos começar pela lógica. Para a pessoa confirmar o cadastro, teria que ter base em alguma coisa, certo? Então eu vou usar a função md5. O que ela faz? ela gera número grandes, malucos, criptografados.

Usaremos assim:

$chave = md5(uniqid( time() . $_SERVER['REMOTE_ADDR'] . rand(0, 9) ));

o que este codigo faz? ele gera números criptografados, mas não pode ser so md5 e pronto, tem que ser algo randomico, pois será adicionado no banco de dados e este codigo gerado não pode ser igual a de ninguém.

Agora vamos começar o código.

Eu vou usar os seguintes campos, será um exemplo.

login
senha
nome
email
cidade
estado

Estes serão os campos que eu vou usar para demonstrar para vocês.

Do lado de cada função terá um explicação.

O codigo vai ficar assim:

<?
// Script desenvolvido por Glauco Maschio
// www.GlaucoMaschio.com.br

// Início do código.

include "config.php"; // Inclui o arquivo de configuração.

$db   = mysql_connect ($host, $login_db, $senha_db); // Aqui selecionamos os campos do config.php.
$basedados = mysql_select_db($db); // OBS: Caso os dados do seu config não sejam iguais, mude acima.

$pesquisar = mysql_query("SELECT * FROM `usuarios` WHERE login = '$login'", $db); // Aqui conferimos se o login que a pessoa digitou já existe.
$y = mysql_num_rows($pesquisar); // Resultado

if ( $y == 1 ) {
  $msg .= "Infelizmente o Login que você escolheu já existe. Escolha outro.<br>"; // Caso exista, está mensagem aparecerá.
  }

if ( $login == "" ) {
  $msg .= "Você não digitou um Login.<br>"; // Caso o campo login tenha ficado em branco.
  }

if ( $senha == "" ) {
  $msg .= "Você não digitou uma Senha.<br>"; // Caso o campo senha tenha ficado em branco.
  }

if ( $senha2 != $senha ) {
  $msg .= "Você digitou duas Senhas diferentes.<br>"; // Caso a pessoa tenha digitado duas senhas diferentes.
  }
  
if ( $nome == "" ) {
  $msg .= "Você não digitou o seu Nome.<br>"; // Caso o campo nome tenha ficado em branco.
  }
  
if ( $email == "" ) {
  $msg .= "Você não digitou o seu E-mail.<br>"; // Caso o campo email tenha ficado em branco.
  }
  
if ( $cidade == "" ) {
  $msg .= "Você não digitou a sua Cidade.<br>"; // Caso o campo cidade tenha ficado em branco.
  }
  
if ( $estado == "" ) {
  $msg .= "Você não digitou o sue Estado.<br>"; // Caso o campo estado tenha ficado em branco.
  }
  
// Agora nós vamos ver se o e-mail que a pessoa digitou não existe no banco de dados.
  
$pesq = mysql_query("SELECT * FROM `usuarios` WHERE email = '$email'", $db);
$pesquisar_email = mysql_num_rows($pesq);

if ( $pesquisar_email == 1 ) {
  $msg .= "O E-mail digitado já está cadastrado.<br>"; // Se o email já estiver cadastrado aparece está mensagem.
  }
  
if ( $msg == "" ) { // Caso não tenha ocorrido nenhum erro ele executa as funções abaixo.

// Gera a chave para validação no e-mail.
$chave =  md5(uniqid( time() . $_SERVER['REMOTE_ADDR'] . rand(0, 9) ));

// Gera a data do registro para se ter um controle.
$data_registro = date("Y-m-d"); // Não mude, pois ela será acertada abaixo.
$data = substr($data_registro,8,2) . "/" .substr($data_registro,5,2) . "/" . substr($data_registro,0,4); // Fica no formato 08/10/2004.

// Insere os dados no banco de dados
$x = mysql_query("INSERT INTO `vip` (login, senha, email, nome, cidade, estado, data, chave) VALUES ('$login','$senha','$email','$nome','$cidade','$estado','$data','$chave')", $db);

// Quando a pessoa termina de se cadastrar aparece está mensagem.
    if ( $x == 1 ) {
      echo "Cadastrado com Sucesso! Foi enviado uma confirmação para o seu e-mail e após confirmado você poderá se logar no site.";

// Se ocorrer um erro no servidor aparece está mensagem.
      } else {
     echo "Ocorreu um erro em nosso servidor, desculpe.";
  }
  
// Caso ocorra erros, ele lista eles abaixo.
  } else {
    echo "Ocorreram os seguintes erros:<br><br> $msg</font>";
}

// Envia o e-mail para a pessoa.

$assunto = "Codigo de Confirmação"; // Assunto do E-mail.

$fname = "Nome do seu Site"; // Nome do seu site.

$femail = "Contato@SeuSite.com.br"; // E-mail do seu site.

$destino = "\"$login\" <$email>"; // Login e o email da pessoa que se cadastrou.

$confirmail = ' 
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ola '.$login.'!</p>
<p>Abaixo está o seu codigo de confirmação:</p>
<p><strong><a href="http://www.seusite.com.br/validar.php?chave='.$chave.'">http://www.seusite.com.br/validar.php?chave='.$chave.'</a></strong></p>
<p>Entre neste endereço para ativar o seu cadastro.</p>
<p>Atenciosamente, Seu Site.</p>
</font></p>'; // Mensagem que vai para a pessoa.

$headers  = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: \"$fname\" <$femail>\r\n";

if (!mail($destino, $assunto, $confirmail, $headers))

// Fim do código.

?>

Acho que está bem explicado né?

O que está faltando agora?

o validar.php .. só que antes disso.. lembre-se que a chave foi inserida no banco de dados junto com o cadastro da pessoa. Quando ela apertar em confirmar, ele vai conferir a chave que está no banco de dados com a que está no e-mail.

o validar.php é algo bem simples, só um update :P
<?
include "config.php";

$conexao = mysql_connect($host, $login_db, $senha_db);
mysql_select_db($db, $conexao);

mysql_query("UPDATE `usuarios` SET ativo = 'sim' WHERE chave = '".$chave."'");
printf("Seu cadastro foi Confirmado e Ativado!", mysql_affected_rows());
mysql_query("COMMIT");
?>
Lembrando algumas coisas.

Tabela usada - usuarios ... caso a sua seja diferente basta mudar.

Tabela da chave - Lugar aonde a chave vai ser gravada é chave mesmo e o lugar aonde vai ficar gravado se ela confirmou ou não é Ativo.

Config.php - Eu usei host, login_db, senha_db e db ... Caso o seu seja diferente é so mudar.

Se você quiser limitar as suas páginas, para só cadastrados que tenham confirmado o cadastro você põe no seu select assim
WHERE ativo = 'sim'

dúvidas, sugestões postem ae

vlw

Espero ter ajudado o pessoal que precisa :D

Edição feita por: _tHeFlAsH_, 08/10/2004, 17:35.

Glauco Maschio
www.glaucomaschio.com.br

#2 sxk_88

sxk_88

    Turista

  • Usuários
  • 36 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 18/12/2004, 10:52

os arquivos são só esse gigante, validar e config???
eu sou novato em php... to começando a aprender agora.. será que vc poderia POR FAVOR me passar esse código completo, tipo todos os arquivos??? me ajudaria muito estou atras de um sistema de cadastro para inserir em meu site
ROCK | Livee - www.rocklivee.com
Crescendo junto com o rock independente

#3 _tHeFlAsH_

_tHeFlAsH_

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 18/12/2004, 14:43

Esse é o sistema completo de VALIDAÇÃO .. vem um sistema de login por trás, que você tem que criar ... o config.php nada mais é que a configuração que você sua no sue site .. se você tiver um config.php no seu sistema de login e senha use o mesmo para validação .. é aodne vem as informações como local, login do banco de dados, senha do banco de dados, banco de dados e etc :)
Glauco Maschio
www.glaucomaschio.com.br

#4 infonet

infonet

    Turista

  • Usuários
  • 57 posts
  • Sexo:Não informado

Posted 18/12/2004, 17:54

nos passe o modelo desse config.php

Grato
Você procura Hospedagem para seu site ?

Visite a http://www.hostall.com.br

Domínios por R$ 35,90/ano

com painel de controle proprío

#5 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 02/06/2005, 09:42

Eita merdha o cara ta fazendo propaganda do host dele ali em baixo... viu né? e ele nem sabe o que é um arquivo de conexao? :P

Otimo tuto cara funfa 100%! Congratulations ;)


Falopa!

#6 Takahata

Takahata

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 27/08/2005, 17:26

realmente o tuto ta funcionando
+ e pra bloquear o acesso de quem ainda nao se autenticou?

#7 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 28/08/2005, 04:06

realmente o tuto ta funcionando
+ e pra bloquear o acesso de quem ainda nao se autenticou?

como ele disse.. selecina o db e faz um if no campo la... (num lembro o nome q ele pois kk) e poe se for =="sim" ele permite else ele nao exibe! num é treta é só pensar!
[]'s

#8 auei

auei

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado
  • Interesses:PHP

Posted 02/09/2005, 12:48

Aqui não deu muito certo na hra de validar ...
a confirmaçao foi mandado pro email dai eu peguei o link
trokei a ultima letra ou numero por exemplo:

site.com/validar.php?chave=0a61690f7758c8b0a78aa66a5dd3ee05
site.com/validar.php?chave=0a61690f7758c8b0a78aa66a5dd3ee07

E validou do mesmo modo ... :blink:
Não sei mas acho q ta meio errado isso não?

É isso abraços! (y)

#9 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 02/09/2005, 13:12

We tente entao fazer assim poe pra enviar a chave e depois o login do camarada

chave=14525622656953235&login=teste

saca??

depois voce coloca na query assim
$chave=$_GET['chave'];
$login= $_GET['login'];

$sql=mysql_query("SELECT * FROM tabela WHERE chave='$chave' AND login='$login'");


Falopa!

#10 auei

auei

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado
  • Interesses:PHP

Posted 02/09/2005, 14:16

mas ai q ta ...
eu n sei faze pra dexa assim:

chave=14525622656953235&login=teste

AHUAuahIAHuiAh :lol: n tem como da uma força ai coloca como q faz?

Abraços! (y)

#11 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 02/09/2005, 15:55

We mas eu fiz la tu nao viu???

Ta la dentro do texto destacado em CODE


coloca aquilo no arquivo que confirma

e altera no arquivo que envia o email de forma que ele envie tambem o login do camarada se nao tambem nao funfa


Falopa!

#12 auei

auei

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado
  • Interesses:PHP

Posted 03/09/2005, 02:39

Envie pra onde? pro validar.php ?
:blink:
eu so meio bestão em php n liga n cara
IAUhuiAUHAhUaIAUh :P

Não seria melhor fazer uma consulta de login e chave
do cara? pra valida o esquema :blink: no mesmo estilo
do esquema akele q verifica o login e os outros negocios
como ta no primeiro codigo ali encima e talz...

Devo ta falando bobagem se eu tivé me diz! :P

#13 auei

auei

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado
  • Interesses:PHP

Posted 14/09/2005, 01:57

Ninguem sabe me responde? :blink:

Flw! (y)

#14 hugosenna

hugosenna

    Turista

  • Usuários
  • 41 posts
  • Sexo:Masculino
  • Localidade:Manaus

Posted 21/09/2005, 12:40

ae galera nao conseguir implementar o sistema deu error, algum pode me passar jah corrigido o sistema ?

#15 edumc

edumc

    Turista

  • Usuários
  • 59 posts
  • Sexo:Não informado

Posted 12/05/2006, 21:43

Muito boa a explicação

Edição feita por: edumc, 23/07/2006, 12:11.





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq