Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 391
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Confirmação de email

23-03-2010 11:19

Bom dia a todos.
Desculpem , pode ser estranho o que vou solicitar de ajuda agora , mas é a pura questão , não estou encontrando e ou não estou sabendo procurar.
Vamos ao que interessa.
Tenho um formulário de contato onde ja tenho validação de email e dados, no entanto foi pedido para que eu completasse este com confirmação de envio no email da pessoa que preenchesse o formulário, isto é , quando clicar em enviar , primeiro vai um email para a pessoa que esta preenchendo o formulário para que a mesma confirme que aquele email é dela, assim que confirmar , os dados do formulário são enviados ao destinatário.
Tipo confirmação de cadastro em foruns, para liberar tem que confirmar o email.
Espero que tenham entendido.
Desde ja agradeço.
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

Confirmação de email

23-03-2010 12:01

Bom dia, vou dar uma pincelada aqui para ver se entende:

Suponhamos:
create table cadastro ( id_cadastro int not null primary key auto_increment, nome varchar(50), email varchar(50), login varchar(30), senha varchar(32), data_ts varchar(14), uid varchar(50), ativo bool default 0 );

Temos a tabela criada!

Observe ‘data_ts’, ‘uid’ e ‘ativo’. Esses serão os campos usados como controle, para validar, após ele receber o email de confirmação.
O campo uid, irá armazenar um id unico, gerado pela função uniqid do PHP, e esse id será usado em conjunto com o campo de data_ts, para validar o cadastro, e ativarmos.

Logo: Cadastro.php

// Vou assumir que o arquivo conectar.php existe, e que ele e o responsavel // por se conectar a seu database include_once('conectar.php'); // Vou assumir que os campos foram preenchidos todos corretamente // e que ninguem vai tentar se aproveitar do formulario para SQL Injection // ou coisas do genero if( isset( $_POST['enviar'] ) ) { $nome = $_POST['nome']; $email = $_POST['email']; $login = $_POST['login']; $senha = md5( $_POST['senha'] ); $uid = uniqid( rand( ), true ); $data_ts = time( ); $ativo = 0; $sql = "insert into cadastro ( id_cadastro, nome, email, login, senha, data_ts, uid, ativo ) "; $sql .= "values ('', '$nome','$email','$login','$senha','$data_ts','$uid','$ativo')"; if( ! mysql_query( $sql ) ) { echo "Houve um erro inserindo o registro ".mysql_error( ); } else { // Registro inserido com sucesso, mandar email $id = mysql_insert_id( $con ); // Criar as variaveis para validar o email $url = sprintf( 'id=%s&email=%s&uid=%s&key=%s',$id, md5($email), md5($uid), md5($data_ts) ); $mensagem = 'Para confirmar seu cadastro acesse o link:'."\n"; $mensagem .= sprintf('http://www.dominio.com.br/ativar.php?%s',$url); // enviar o email mail( $email, 'Confirmacao de cadastro', $mensagem ); echo "Registro inserido com sucesso"; } } ?> <form method="POST"> Nome:<input type="text" name="nome"><br> Email:<input type="text" name="email"><br> Login:<input type="text" name="login"><br> Senha:<input type="password" name="senha"><br> <br> <input type="submit" name="enviar" value="Cadastrar"> </form>


O formulário é bastante simples, e eu gostaria de dar destaque a linha:
$url = sprintf( ‘id=%s&email=%s&uid=%s&key=%s’,$id, md5($email), md5($uid),
md5($data_ts) );
Veja que essas são as variáveis que identificam o usuário que acaba de se
cadastrar. Quando a url para validação for acessada, iremos conferir se o os
dados de unique id e a data conferem com o email especificado, para poder
então ativar o cadastro. O email e data, são passados como hash md5, para
proteger essas informações de quem as possa estar vendo. A variável id
é quem identificará com qual registro na tabela essas informações devem ser
comparadas. O registro será ativado, apenas caso todas as informações
cadastradas sejam iguais as informações vindas pela URL, dessa forma, se
alguém tentar ativar um cadastro sem ser o verdadeiro dono da informação, não
poderá faze-lo, a menos que conheça o segundo exato em que o cadastro foi
feito, o email no qual o cadastro foi feito e a unique id do usuario.
Vamos ver então, como fica o código para ativar o cadastro.

Logo: Ativar.php

// Novamente, não irei fazer nenhum tipo de checagem para validar os dados // em busca de SQL Injection ou coisas do genero. Não se esqueça você de fazer // isso. // Conectar no banco de dados include_once('conectar.php'); // Dados vindos pela url $id = $_GET['id']; $emailMd5 = $_GET['email']; $uidMd5 = $_GET['uid']; $dataMd5 = $_GET['key']; //Buscar os dados no banco $sql = "select * from cadastro where id_cadastro = '$id'"; $sql = mysql_query( $sql ); $rs = mysql_fetch_array( $sql ); // Comparar os dados que pegamos no banco, com os dados vindos pela url $valido = true; if( $emailMd5 !== md5( $rs['email'] ) ) $valido = false; if( $uidMd5 !== md5( $rs['uid'] ) ) $valido = false; if( $dataMd5 !== md5( $rs['data_ts'] ) ) $valido = false; // Os dados estão corretos, hora de ativar o cadastro if( $valido === true ) { $sql = "update cadastro set ativo='1' where id_cadastro='$id'"; mysql_query( $sql ); echo "Cadastro ativado com sucesso!"; } else { echo "Informações inválidas"; }

A partir daí o cadastro já pode ser ativado. Agora quando o usuário for se
logar no sistema, basta verificar se o valor do campo ativo na tabela
para aquele usuário, vale 1. Caso sim, significa que o usuário já teve sua
ativação realizada.
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 391
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Confirmação de email

23-03-2010 12:32

Perdão, acho que não me espressei direito.
É um formulário de contato com confirmação de envio por email .
Não tem cadastro.

O cliente preenche o formulario de contato e clica em enviar, recebe uma notificação para verificar seu email e confirmar, ao clicar no link o que ele colocou no formulário de contato é enviado.

Espero ter melhorado agora.
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

Confirmação de email

23-03-2010 13:45

Quando ele mandar o email, voce pode guardar os dados do formulario no banco.
E somente ativa o envio se for confirmado se o campo ATIVO = 1.
Feita a ativacao ele resgata os dados do banco e utiliza na funcao mail()
:cool-very
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17516
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Confirmação de email

23-03-2010 13:49

Completando o que o brunoban disse, se não for usar BD, a engenharia é essa:

No formulário que a pessoa preenche, ela vai mandar os dados para ela mesmo, no caso o link de confirmação para o email cadastrado.

Na função mail(), que você vai colocar no script que recebe os dados do POST, você coloca um link para um documento, que vai receber esse email, e fazer o outro envio, ou cadastro, o que for.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 391
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Confirmação de email

03-05-2010 22:05

Resolvi da seguinte forma:
quando a pessoa preenche o formulário, ela manda para ela mesma, com um aviso qua basta responder aquele email que vai para o responsável, sem precisar escrever algo ou direcionar, pois ja esta direcionado ao responder.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado