Error while sending form

Asked

Viewed 303 times

0

People made a form with JS but when sending it only falls on error condition and do not know why follow the console print and codes.

NOTE: the article contact.php is in the public html folder you can access the site in this link inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

this and the code line where my form drops when I click send

$output = json_encode(array('type'=>'error', 'text' => 'Ocorreu um erro tente novamente'));
        die($output);

the HTML:

<form id="form-elements" onSubmit="return false">
    <div class="row">
        <div class="col-md-12 center">
            <div id="result"></div>
        </div>
    </div>

    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <input type="text" class="form-control" placeholder="Nome" name="name" id="name" required>
            </div>
        </div>
        <div class="col-sm-12">
            <div class="form-group">
                <input type="email" class="form-control" placeholder="E-mail" name="email" id="email" required>
            </div>
        </div>
        <div class="col-sm-12">
            <div class="form-group">
                <input type="text" class="form-control" placeholder="Telefone" name="phone" id="phone" required>
            </div>
        </div>
        <div class="col-xs-12">
            <textarea id="input" class="form-control" rows="7" required="required" placeholder="Mensagem" name="message" id="message"></textarea>
        </div>
        <button type="submit" class="btn btn-default buttons" id="submit_btn">Enviar</button>
    </div>
</form>

the JS:

//Contact Us
$("#submit_btn").click(function() {
    //get input field values
    var user_name = $('input[name=name]').val();
    var user_email = $('input[name=email]').val();
    var user_telephone = $('input[name=phone]').val();
    var user_message = $('textarea[name=message]').val();

    //simple validation at client's end
    var post_data, output;
    var proceed = true;
    if (user_name == "") {
        proceed = false;
    }
    if (user_email == "") {
        proceed = false;
    }
    if (user_message == "") {
        proceed = false;
    }

    //everything looks good! proceed...
    if (proceed) {
        //data to be sent to server
        post_data = {
            'userName': user_name,
            'userEmail': user_email,
            'userTelephone': user_telephone,
            'userMessage': user_message
        };

        //Ajax post data to server
        $.post('contact.php', post_data, function(response) {

            //load json data from server and output message
            if (response.type == 'error') {
                output = '<div class="alert-danger" style="padding:10px; margin-bottom:25px;">' + response.text + '</div>';
            } else {
                output = '<div class="alert-success" style="padding:10px; margin-bottom:25px;">' + response.text + '</div>';

                //reset values in all input fields
                $('#form-elements input').val('');
                $('#form-elements textarea').val('');
            }

            $("#result").hide().html(output).slideDown();
        }, 'json');

    }
});

//reset previously set border colors and hide all message on .keyup()
$("#form-elements input, #form-elements textarea").keyup(function() {
    $("#result").slideUp();
});

the PHP:

<?php
if($_POST)
{
    $to_Email       = "[email protected]"; //Replace with recipient email address
    $subject        = 'Torre Forte - Novo contato do site'; //Subject line for emails


    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

        //exit script outputting json data
        $output = json_encode(
        array(
            'type'=>'error',
            'text' => 'Request must come from Ajax'
        ));

        die($output);
    }

    //check $_POST vars are set, exit if any missing
    if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Os campos de entrada estão vazios!  '));
        die($output);
    }

    //Sanitize input data using PHP filter_var().
    $user_Name        = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
    $user_Email       = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
    $user_Phone = $_POST["userTelephone"];
    $user_Message     = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);

    //additional php validation
    if(strlen($user_Name)<3) // If length is less than 3 it will throw an HTTP error.
    {
        $output = json_encode(array('type'=>'error', 'text' => 'O campo nome não pode ficar vazio'));
        die($output);
    }
    if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Por favor ultilize um e-mail válido'));
        die($output);
    }

    if(strlen($user_Message)<5) //check emtpy message
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Por favor insira uma mensagem'));
        die($output);
    }


    $message_Body = "<strong>Name: </strong>". $user_Name ."<br>";
    $message_Body .= "<strong>Email: </strong>". $user_Email ."<br>";
    $message_Body .= "<strong>Phone: </strong>". $user_Phone ."<br>";
    $message_Body .= "<strong>Message: </strong>". $user_Message ."<br>";



    $headers = "From: " . strip_tags($user_Email) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($user_Email) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";



    //proceed with PHP email.
    $headers = 'From: '.$user_Email.'' . "\r\n" .
    'Reply-To: '.$user_Email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion(). "\r\n" .
    'Content-type: text/html;charset=UTF-8';



    $sentMail = @mail($to_Email, $subject, $message_Body, $headers);

    if(!$sentMail)
    {
        $output = json_encode(array('type'=>'error', 'text' => 'Ocorreu um erro tente novamente'));
        die($output);
    }else{
        $output = json_encode(array('type'=>'message', 'text' => 'Olá '. $user_Name .' Obrigado pelo seu contato retornaremos em breve.'));
        die($output);
    }
}
?>
  • 1

    onsubmit ="return false" that’s right ?

  • @Magichat the correct would be true?

  • Look, onsubmit is an event that occurs when the form is submitted, so it doesn’t seem to make sense, because usually you have a function that runs with the form and if it fails it returns false if it’s not true...

1 answer

1

Try to check this part of the e-mail, I may be wrong but your code seems to work:

$sentMail = @mail($to_Email, $subject, $message_Body, $headers);

if(!$sentMail)
{
    $output = json_encode(array('type'=>'error', 'text' => 'Ocorreu um erro tente novamente'));
    die($output);
}else{
    $output = json_encode(array('type'=>'message', 'text' => 'Olá '. $user_Name .' Obrigado pelo seu contato retornaremos em breve.'));
    die($output);
}

I believe it may be time to send this @mail is returning some error, check if everything is configured to send the email, or try to do a test without this condition to see if the error is in this part same.

Browser other questions tagged

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