3
respostas

PHP - Verificar se já existe um email no BD

Boa tarde, agradeceria ajuda porque do jeito que estou tentando não estou conseguindo resultado esperado.

Preciso verificar na hora do cadastro se um email já está cadastrado ou não no bd, caso sim, voltar e pedir ao usuário para verificar o email digitado ou se cadastrar com email válido e ao mesmo tempo incluir uma senha provisória para que seja enviada de volta para o usuario via email (se o cadastro for feito com sucesso) e ele possa fazer o login utilizando esta senha e o email cadastrado.

Tentei conforme abaixo a parte de verificar o email, mas não estou conseguindo está me voltando esse erro.

Notice: Undefined variable: email in C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\casamento\adiciona-casal.php on line 23

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\casamento\adiciona-casal.php on line 23

23     $sql_email_check = mysqli_query("SELECT COUNT(noivos_id) FROM noivos WHERE email='{$email}'"));

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\casamento\adiciona-casal.php on line 25

25     $eReg = mysqli_fetch_array($sql_email_check);

Notice: Undefined variable: pass in C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\casamento\adiciona-casal.php on line 48
insert into noivos (nome1, sobrenome1, email, nome2, sobrenome2, telefone , rua, numero, cep, cidade, senha, foto) values ('Tinder', 'Love', 'fernando.guerjik@gmail.com', 'Lucy','Tinderovo', 11993456789, 'Vergueiro', '3623', '18550-000', 'Sao Paulo', '', 'acd532d683d02b234821045309242bff.jpg')

Quanto a fazer uma senha provisòria não sei nem por onde começar. Preciso muito dessa ajuda.

Segue arquivo adiciona-casal onde tento verificar se existe email:

<?php require_once ("conecta.php");?>
<?php require_once ("noivosDAO.php");?>
<?php require_once ("noivos.php");?>

<?php
$noivo = new Noivo();
$noivo->setNome1($_POST["nome1"]) ;
$noivo->setSobrenome1($_POST["sobrenome1"]);
$noivo->setEmail($_POST["email"]);
$noivo->setNome2($_POST["nome2"]);
$noivo->setSobrenome2($_POST["sobrenome2"]);
$noivo->setTelefone($_POST["telefone"]);
$noivo->setRua($_POST["rua"]);
$noivo->setNumero($_POST["numero"]);
$noivo->setCep($_POST["cep"]);
$noivo->setCidade($_POST["cidade"]);
$nome_imagem = $noivo->setFoto( $_FILES["foto"]);

if(

  /* Checar se o Email já existeno banco de dados */

  $sql_email_check = mysqli_query("SELECT COUNT(noivos_id) FROM noivos WHERE email='{$email}'"));{

  $eReg = mysqli_fetch_array($sql_email_check);

  $email_check = $eReg[0];
   }
     if ($email_check > 0){

        echo "Este email ( <strong>".$email."</strong> ) já está sendo utilizado.<br />Por favor utilize outra conta de email ou cadastre-se novamente! <br />";

        unset($email);

    }



$dao = new noivosDAO($conexao);
if ($dao->insereNoivos($noivo, $nome_imagem)) {
?>
<!--<script language="JavaScript"> 
window.location="escolha-noivos.php"; 
</script> -->
            <?php
             }else{
               $msg = mysqli_error($conexao);
               echo ($msg);
                ?>

            <p class="text-danger">O Casal <?= $nome1; ?> não foi adicionado, por favor volte a pagina de cadastro e verifique o erro.</p>
            <a href="cadastro-noivos.php" button type="button" class="btn btn-info btn-fill btn-l">Voltar <i class="fa fa-chevron-right"></i></button></a>
           <?php
          }
?>

noivosDAO na função insereNoivos

function insereNoivos ($noivos, $nome_imagem) {

  $query = "insert into noivos (nome1, sobrenome1, email, nome2, sobrenome2,
              telefone , rua, numero, cep, cidade, senha, foto) values ('{$noivos->getNome1()}', '{$noivos->getSobrenome1()}', '{$noivos->getEmail()}', '{$noivos->getNome2()}','{$noivos->getSobrenome2()}', {$noivos->getTelefone()}, '{$noivos->getRua()}', '{$noivos->getNumero()}', '{$noivos->getCep()}', '{$noivos->getCidade()}', '{$noivos->getSenha()}', '" .$nome_imagem. "')";

      echo ($query); 

  return mysqli_query($this->conexao, $query);
}
3 respostas

Sugiro fazer um select no banco e comparar com o email preenchido, pode ser com count mesmo, se conseguir cadastrar crie uma função pra gerar uma senha aleatória http://php.net/manual/pt_BR/function.rand.php e envia-la por email http://blog.thiagobelem.net/enviar-e-mails-pelo-php-usando-o-phpmailer , depois o usuário atualiza, espero que ajude.

Oi André obrigado pelo seu retorno. Ajuda sim, estou quebrando a cabeça em como fazer isso funcionar. A parte da comparação tá retornando erro. A parte da senha aleatória vou tentar aqui utilizando esse rand. A estrutura com PhpMailler temos na apostila FP-73 e eu já fiz algumas vezes (mas a partir de um formulário de contato onde o usuário preenche os campos), neste caso eu preciso criar automaticamente o email e enviar logo após a ação do cadastro concluido com sucesso... Bom, vou continuar tentando por aqui. Valeu, abração

Alguém poderia me dar uma luz?