Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Barros da Rocha

Envio de email depois do cadastro

Recommended Posts

Olá pessoal.

 

Bom, eu preciso de ajuda em relação a um código. Abaixo tenho então o código da página de cadastro de sites. Quando um internauta cadastra seu e-mail e senha, ele é enviado ao BD como é de lógica. Agora, o usuário não recebe o e-mail que programei no PHP para ele receber após concluir o processo de cadastro.

 

Ou seja, no PHP abaixo tem o script mail para enviar um e-mail com os dados de cadastro (e-mail e senha que ele cadastrou) assim que os dados são inseridos no SQL. O detalhe é que mesmo ele submetendo corretamente o formulário de cadastro o e-mail não é enviado e não consigo entender o motivo, já que não mostra nenhum erro. :x

	<?php
		if(isset($_POST['do_register'])) {
			$email = protect($_POST['email']);
			$passwd = protect($_POST['passwd']);
			$cpasswd = protect($_POST['cpasswd']);
			
			$check_email = mysql_query("SELECT * FROM users WHERE email='$email'");
			
				if(empty($email) or empty($passwd) or empty($cpasswd)) { echo error ($lang['REGISTER_ALL_FIELDERRO']); }
				elseif(!isValidEmail($email)) { echo error ($lang['REGISTER_ERROR_EMAIL']); }
				elseif(mysql_num_rows($check_email)>0) { echo error ($lang['REGISTER_ERROREMAIL_EXIST']); }
				elseif($passwd !== $cpasswd) { echo error ($lang['REGISTER_ERROR_PASSWORD']); }
				else {
					$passwd = md5($passwd);
					$user_ip = $_SERVER['REMOTE_ADDR'];
					$insert = mysql_query("INSERT users (email,passwd,status,user_ip) VALUES ('$email','$passwd','1','$user_ip')");
		// ENVIO DO E-MAIL
				$emails = $_GET['email'];
				$senha = $_GET['passwd'];

				$to = $emails;
				$subject = "Bem vindo ao site";
				$headers = "MIME-Version: 1.0\r\n";
				$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
				$headers .= "From: ADMIN <suporte@site.com>\r\n";
				/* mensagem */
				$message = '<body>
				<head>
				<title>Bem vindo ao site</title>
				</head>
				<body>
				<p>Olá!<br /><br /> Estamos lhe enviando este email porque o seu endereço eletrônico foi cadastrado em nosso site. Abaixo, segue os dados para compreender:</p>
				<table>
				<tr>
				<th>Login 1</th><th>Senha</th>
				</tr>
				<tr>
				<td>(Seu e-mail)</td><td>$senha[passwd];</td>
				</tr>
				</table><p>Caso tenha dúvidas, entre em contato com o administrador!</p>
				</body>';
				
				mail($to, $subject, $message, $headers);
		// FIM DO ENVIO DO E-MAIL

		echo success ($lang['REGISTER_SUCESSFUL']);
		}
		}
?>

Se olharem no código a fundo, vão perceber essa variável $senha[passwd], porém, essa danada ta causando erro se coloco entre as aspas para dar o valor dela, que seria a senha que o usuário digitou.

 

O que de fato preciso de você, se puder me ajudar, é que assim que o cadastro for concluído a senha seja enviada para o e-mail do usuário, tendo em mente neste e-mail que o PHP enviar, deve conter a senha que ele cadastrou no site antes dela ser inserida como MOD5.

 

Fico grato pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce tem que concaternar o html como php (no caso do campo senha)

acho que é mais ou menos assim.

".$senha['passwd'];."

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está tentando enviar do seu LOCALHOST com a função nativa mail() não vai mesmo, teria de upar os arquivos para o servidor e testar online.

 

Recomendo utilizar a class PHPMailer em suas aplicações, com ela tbm é possível enviar emails do LOCALHOST usando a função isSMTP()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ta enviando os dados via POST, porém está tentando obter o email e a senha para monta o envio do email com GET.

$emails = $_GET['email'];
$senha = $_GET['passwd'];

faça um teste com essas alterações

//$emails = $_GET['email']; <!-- ALTERAÇÃO -->
//$senha = $_GET['passwd']; <!-- ALTERAÇÃO -->

//$to = $emails; <!-- ALTERAÇÃO -->
$subject = "Bem vindo ao site";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ADMIN <suporte@site.com>\r\n";
/* mensagem */
$message = '<body>
<head>
<title>Bem vindo ao site</title>
</head>
<body>
<p>Olá!<br /><br /> Estamos lhe enviando este email porque o seu endereço eletrônico foi cadastrado em nosso site. Abaixo, segue os dados para compreender:</p>
<table>
<tr>
<th>Login 1</th><th>Senha</th>
</tr>
<tr>
<td>'.$email.'</td><td>'.$passwd.'</td> <!-- ALTERAÇÃO -->
</tr>
</table><p>Caso tenha dúvidas, entre em contato com o administrador!</p>
</body>';

//mail($to, $subject, $message, $headers); // <!-- ALTERAÇÃO -->
mail($email, $subject, $message, $headers);

Caso surja algum erro, poste aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo Sóstenes, você é um gênio meu amigo! Funcionou muito bem!!

 

Agora para que eu possa aprender, se não for um incomodo para você é claro... As alterações que você fez foi só na parte do "$passwd"?

 

Eu estava usando o método GET Hugo, para pegar a senha antes dela ser enviada ao Banco de dados. Por quê? Porque, essa senha quando enviada é transformada em mods5. Ou seja:

$passwd = md5($passwd);

Quando o usuário receber o e-mail, ele vai receber a senha encripitada (acho que é este o nome), e não a senha que ele digitou no campo senha. Porém, eu presumo que usando get não é possível de fazer isso néh?

 

Edit:

A propósito, muito obrigado mesmo pela sua ajuda! :flores:


Opâ! Hugo, fico muito grato pelo seu apoio! Com suas dicas e com a ajuda de um artigo que me passou eu consegui fazer corrigir aquele detalhe que citei acima. Eu usei o $senha que você colocou para mim depois das duas barras // antes do INSERT para já pegar os dados... Só que ao invés de usar o método GET, eu usei o que me aconselhou, que é o POST e funcionou mais do que perfeitamente.

 

OBRIGADO meu caro!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.