Receiving e-mail without data

Asked

Viewed 107 times

-1

I created a form using phpmailer, but every day a blank email arrives, without having filled in the name, phone or email. I believe it’s a search robot, does anyone know how I can remove it? because it keeps getting in the way of my metrics.

In short. every day at 7:46pm, this blank email comes to me.
http://www.google.com/url?url=www.salusplanosdesaude.com.br&yahoo.com

I think about using robots.txt, but will it work? can someone please help me. ;)

this is my form ;)

                                    <form method= "POST" class="mb-0" action="includes-site/enviar.php" id="formcadastro" >
                                    <div>
                                        <label>Primeiro Nome</label>
                                        <input type="text" name="nome" class="form-control"id="nome">
                                    </div>

                                    <div>
                                        <label>Email</label>
                                        <input type="text" name="email" class="form-control" id="email">
                                    </div>
                                    <div>
                                        <label>Telefone</label>
                                        <input type="text" name="phone" class="form-control" id="phone" onkeypress="mascara(this)">
                                    </div>
                                    <div>
                                        <input type="submit" class="btn btn--primary btn--block mt-10" value="enviar">
                                    </div>
                                    <div>
                                    <input type="hidden" name="titulo" value="<?php echo $tit;?>">
                                    </div>
                                </form>

this is the send

    <?php
// Adiciona o arquivo class.phpmailer.php - você deve especificar corretamente o caminho da pasta com o este arquivo.
require_once("PHPMailer/PHPMailerAutoload.php");
// Inicia a classe PHPMailer
$mail = new PHPMailer();

// DEFINIÇÃO DOS DADOS DE AUTENTICAÇÃO - Você deve auterar conforme o seu domínio!
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = ""; // Seu endereço de host SMTP
$mail->SMTPAuth = true; // Define que será utilizada a autenticação -  Mantenha o valor "true"
$mail->Port = ; // Porta de comunicação SMTP - Mantenha o valor "587"
$mail->SMTPSecure = false; // Define se é utilizado SSL/TLS - Mantenha o valor "false"
$mail->SMTPAutoTLS = false; // Define se, por padrão, será utilizado TLS - Mantenha o valor "false"
$mail->Username = ''; // Conta de email existente e ativa em seu domínio
$mail->Password = ''; // Senha da sua conta de email

// DADOS DO REMETENTE
$mail->Sender = ""; // Conta de email existente e ativa em seu domínio
$mail->From = ""; // Sua conta de email que será remetente da mensagem
$mail->FromName = "Salus"; // Nome da conta de email

// DADOS DO DESTINATÁRIO
$mail->AddAddress('', 'Leads'); // Define qual conta de email receberá a mensagem
//$mail->AddAddress('[email protected]'); // Define qual conta de email receberá a mensagem
//$mail->AddCC('[email protected]'); // Define qual conta de email receberá uma cópia
//$mail->AddBCC('[email protected]'); // Define qual conta de email receberá uma cópia oculta

// Definição de HTML/codificação
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'utf-8'; // Charset da mensagem (opcional)

// DEFINIÇÃO DA MENSAGEM
$mail->Subject  = $_POST['titulo']." - ".$_POST['nome']; // Assunto da mensagem
$mail->Body .= " Nome: ".$_POST['nome']."<br>"; // Texto da mensagem
$mail->Body .= " Email: ".$_POST['email']."<br>"; // Texto da mensagem
$mail->Body .= " Telefone: ".$_POST['phone']."<br>"; // Texto da mensagem
$mail->Body .= "<br/><br/>Enviado em ". date("d/m/Y")." &agrave;s ".date("H:i:s")." por <a href='".$_SERVER['HTTP_REFERER']."'>".$_SERVER['HTTP_REFERER']."</a>";


// ENVIO DO EMAIL
$enviado = $mail->Send();
// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();



// Exibe uma mensagem de resultado do envio (sucesso/erro)
if ($enviado) {
  echo "<script type='text/javascript'>alert('Mensagem enviada com sucesso. Favor aguarde nosso contato');</script>";
} else {
  echo "<script type='text/javascript'>alert('Ocorreu um erro ao enviar o email. Favor entre em contato conosco pelo email:  ou pelo telefone: ');</script>";
  //echo "Não foi possível enviar o e-mail.";
  //echo "<b>Detalhes do erro:</b> " . $mail->ErrorInfo;
}
echo "<script type='text/javascript'>window.location = 'https://salusplanosdesaude.com.br/';</script>";
?>
  • Did you do some checking on your form to not send email if the fields are empty? Maybe you can enter Google Recaptcha. Post here your code for analysis :)

  • I put the code part of the form and send it.php and also put the validation using jquery

  • Please [Dit] the post with a [mcve] of the problem. More details on [help].

3 answers

0


In a quick and simple way, you can place the attribute in the email field required and can also change the type for email type="email", link has the list of browsers that support this change.

You can place the required in other fields that you deem necessary.

Another solution, which was pointed out by Maurício Krüger is the use of recaptcha.

  • Understood, I’ll try, Thank you! = D

0

There are two ways you can avoid this, the first is the one already mentioned, which would generate Recaptcha. Here is a step by step example:

http://acmeextension.com/integrate-google-recaptcha-with-php/

Summarizing the link above, after generating a key for your site on Google you would add the following in your form:

<script src='https://www.google.com/recaptcha/api.js' async defer >
<div class="g-recaptcha" data-sitekey="sua_chave_api">

And then I would alter the form’s data capture in this way:

<?php
  if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response']))
  {
        $secret = 'your_actual_secret_key';
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success)
        {
            //Chave valida, processar o formuláio
        }
        else
        {
           //Houve um erro ao validar o captcha
        }
   }
?>

If you don’t want to add captcha, another alternative would be to generate a key for the form, which would be an Hidden field with an automatically generated value when opening the page. Here’s an example of this:

https://code.tutsplus.com/tutorials/secure-your-forms-with-form-keys--net-4753

Another alternative, which would be a variation of this method, would be to generate a dynamic prefix for each field of the form. Unlike captcha, a hidden field would be generated with a random number created when opening the page

"<input type='hidden' name='form_key' id='form_key' value='numero_aleatorio' />

When posting the form, this number would be validated before processing the form data

if($_SERVER['REQUEST_METHOD'] == 'post')
{
    if(!isset($_POST['form_key']) || !$formKey->validate())
    {
        //O código postado é diferente do código gerado
    }
    else
    {
        //O código e igual, processar o formulário
    }
}

0

In addition to the solutions listed by Maurício Krüger and Roberto Lima, one option is to validate the data also in your PHP script.

So, before sending the email, you can test if the fields have content:

if ((!empty($_POST['titulo'])) && (!empty($_POST['nome'])) && 
    (!empty($_POST['email'])) && (!empty($_POST['phone'])))
{
    $enviado = $mail->Send();
    // ...restante do código
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.