Jump to content
Fórum Script Brasil
  • 0

Senha Email


frnd
 Share

Question

Seguinte,

Caso o usuário esqueça da senha de acesso ao sistema ele terá como informar seu CPF para que a senha seja enviada para o email (email já cadastrado)

Para isso, existem 4 niveis de usuarios, mas como eu vou percorrer todas as tabelas testando o CPF em cada uma, e se encontrar, ele já envia a senha automaticamente?

[]s

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

simples..

pega o cpf e verifica ele na 1a tabela..

Se tiver linhas afetadas, ou seja, se tiver algum registro é porque o achou, então, enviar email com senha para esse caso.

se não achar nada na 1a tabela, procurar na 2a...

Vai ficar alguma coisa, +/- assim.. Alguém que saiba um pouco mais de php, me corrija se eu errar alguma coisa..

$CPF;
mysql_query("select * from tbTabela1 where cpf = $CPF");
   if mysql_affected_rows > 0{
      //mandar email com a senha;}
   else{
          mysql_query("select * from tbTabela2 where cpf = $CPF");
          if mysql_affected_rows > 0
(...) e assim por diante..



Ou então pode testar tudo de uma vez só guardar a senha..

mysql_query("select * from tbTabela1 where cpf = $CPF");
   if mysql_affected_rows > 0{
//guardar senha em variável}

mysql_query("select * from tbTabela2 where cpf = $CPF");
   if mysql_affected_rows > 0{
//guardar senha em variável}

assim, se achar alguma coisa, vai guardar a senha. se não achar nada, vai ficar em branco.

Bom, é uma sugestão.. Talvez tenha maneira mais fácil de fazer isso..

Boa sorte!

Link to comment
Share on other sites

  • 0

Tu não acha mesmo que eu vou procurar na modelagem onde estão as tabelas relacionadas né? Coloca AQUI as tabelas e as ligações entre elas pra assim conseguir definir uma query... provavelmente um INNER JOIN ou LEFT JOIN já resolva... algo do tipo:

$sql = 'SELECT ta.senha, tb.senha FROM usuariologin u
LEFT JOIN tabelaa ta ON u.id=ta.id
LEFT JOIN tabelab tb ON u.id=tb.id
WHERE ta.cpf='.$cpf.' OR tb.cpf='.$cpf;

Mas só com os dados exatos dá pra fazer a query correta... o principal ponto é saber como se relaciona a tabela que contêm os registros dos login com a tabela que contêm os outros dados...

Link to comment
Share on other sites

  • 0

eu coloquei assim

<?     
   $sql = "select usuariologin.senha FROM usuariologin LEFT JOIN egresso ON (egresso.id = usuariologin.id) WHERE egresso.cpf = '$cpf'";
   $exec = mysql_query($sql);
   if (mysql_num_rows($exec) == 1) {
      $subject = "Solicitação de senha";    
      $linha = mysql_fetch_array($exec);
      $senha = $linha['senha'];
      $msg = "Sua senha é: \"$senha\"";
      mail($email, $subject, $msg);
      }
      
     else{
     echo "<script language=\"JavaScript\">"; 
     echo "window.alert(\"CPF inválido! Por favor, tente novamente!\");";
     echo "window.location.href = '../paginas/perca_senha.php';";
     echo "</script>";
     }   
?>

mas dá esse erro

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing

na linha do mail()

Link to comment
Share on other sites

  • 0

Se você lesse o manual, veria:

additional_headers (optional)

String to be inserted at the end of the email header.

This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n).

Note: When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.

Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.

Ou seja, você tem que especificar um FROM no cabeçalho...

Link to comment
Share on other sites

  • 0

Bom, estou utilizando a classe phpmailer desta forma

<?
// chamada da classe phpmailer
require_once('../biblioteca/phpmailer/class.phpmailer.php');

// resgatando os dados passados pelo form
$nomeusuario = $_POST['nome'];
$emailusuario = $_POST['email'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['msg'];

// faço a chamada da classe
$Email = new PHPMailer();
// na classe, há a opção de idioma, setei como br
$Email->SetLanguage("br");
$Email->IsMail(); 

$Email->IsHTML(true); 

$Email->From = $emailusuario;

$Email->FromName = $nomeusuario;

$Email->AddAddress("[email protected]");

$Email->Subject = $assunto;


$Email->Body .= "<B>E-mail enviado por usuário<BR></b>";
$Email->Body .= "Mensagem do usuário: $msg<BR><BR>";


email //propriamente dito. Mais simples, impossível:


if(!$Email->Send())

  {

echo "A mensagem não foi enviada. <p>";
echo "Erro: " . $mail->ErrorInfo;

}

$Email->IsMail();
Mas, diz que a mensagem não pode ser enviada, oque pode ser? Consegui resolver! utilizei
<?php

require ("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP

$mail->Host = "mail.seudominio"; //seu servidor SMTP

$mail->SMTPAuth = true; // 'true' para autenticação

$mail->Username = "[email protected]"; // usuário de SMTP

$mail->Password = "senhaxxx"; // senha de SMTP

$mail->From = "[email protected]";

//coloque aqui o seu correio, para que a autenticação não barre a mensagem

$mail->FromName = "remetente";

$mail->AddAddress("[email protected]","Nome do Destinatario ");

$mail->AddAddress("[email protected]"); // (opcional) só o envio pelo email

$mail->AddReplyTo("[email protected]","Nome do Destinatario com cópia");

//aqui você coloca o endereço de quem está enviando a mensagem pela sua página
$mail->WordWrap = 50; // Definição de quebra de linha

$mail->AddAttachment("/caminho/do/anexo/no/servidor.ext"); // (opcional) anexos

$mail->AddAttachment("/caminho/do/anexo/servidor.ext","nome_do_anexo.ext"); // (opcional) mais anexos

$mail->IsHTML(true); // envio como HTML se 'true'
$mail->Subject = "Assunto da mensagem ";

$mail->Body = "Conteúdo da mensagem HTML ";

$mail->AltBody = "Para mensagens somente texto";

if(!$mail->Send())

{

echo "Mensagem não enviada

";

echo "Mailer Error: " . $mail->ErrorInfo;

} else {

echo "Mensagem enviada";

}

?>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...