mardi 21 juin 2016

500 Internal Server Error Php with AJAX

Here is my code:

   <form method="post" action="/form.php" novalidate>
        <input placeholder="Name (required)" type="text" name="fullname" />
        <input placeholder="Subject (required)" type="text" name="subject" />
        <input placeholder="Email (required)" type="email" name="email"/>
        <textarea placeholder="Type your Message here... (required)" name="message"></textarea>`enter code here`
        <button type="submit">Send</button>
    </form>

<?php

function validateForm(){
    if ($_SERVER["REQUEST_METHOD"] == "POST"){
        $name = trim(filter_input(INPUT_POST, "fullname", FILTER_SANITIZE_STRING));
        $subject = trim(filter_input(INPUT_POST, "subject", FILTER_SANITIZE_STRING));
        $email = trim(filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL));
        $message = trim(filter_input(INPUT_POST, "message", FILTER_SANITIZE_SPECIAL_CHARS));

        echo $name;   // trying to debug this code by printing variables name, subject, email and message. Still nothing worked. 
        echo $subject;
        echo $email;
        echo $message;

        if (empty($name) && empty($subject) && empty($email) && empty($message)){
            echo "Please ensure all required fields are entered correctly";
            exit;

        }

        if (!preg_match("/^[a-zA-Z ]{2,30}$/", $name) && !preg_match("/^[a-zA-Z0-9 ]{2,60}$/", $subject) &&
            !filter_var($email, FILTER_VALIDATE_EMAIL)){
             echo "Please ensure all required fields are entered correctly";
            exit;
        }  

        else{
            $recipient = "hello@websitename.com";
            $subject  = "New contact from $name";
            $email_content = "";
            $email_content .= "Name: " . $name "n";
            $email_content .= "Email: " .  $email "n";
            $email_content .= "Message:" $message "n";
            $email_headers = "From: " $name, <$email>;

            if (mail($recipent, $subject, $email_content, $email_headers)){
                http_response_code(200);
                echo "Thank you! Your message has been sent.";
                exit;
            }

            else{
                http_response_code(500);
                echo "Something went wrong and we couldn't send your message";
                exit;
            }

        }
    }
    else{
        http_response_code(403);
        echo "There was a problem with your submission, please try again";
        exit;
    }
}

?>


$(document).ready(function(){
    $('form').submit(function(e){
        e.preventDefault();
        var url = $(this).attr("action");
        var formData = $(this).serialize();
        var formMessage = $("#form-message");
        $.ajax({
            type: "POST",
            url: url,
            data: formData,
            success: function(response){
                $("#contact-form").html("<p>Thanks! I will reply you soon.</p>");
            }
        }).fail(function(data){
            $(formMessage).addClass('messageError');
            if (data.responseText !== ""){
                $(formMessage).text(data.responseText);
            }
            else{
                $(formMessage).text("An error occured and your message could not be sent.");
            }
        });
    });

I have been trying to implement AJAX PHP contact form submission but for some reasons i have been getting 500 internal server error of some reasons. I don't know why. Please help me. I appreciate

Aucun commentaire:

Enregistrer un commentaire