Last active
March 12, 2019 15:13
-
-
Save mustafix/937aef10a3c815d4bbb34497be8d7faf to your computer and use it in GitHub Desktop.
ajax-contact-form
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>AJAX Contact Form Demo</title> | |
<link rel="stylesheet" href="style.css"> | |
</head> | |
<body> | |
<div id="page-wrapper"> | |
<h1>AJAX Contact Form Demo</h1> | |
<div id="form-messages"></div> | |
<form id="ajax-contact" method="post" action="mailer.php"> | |
<div class="field"> | |
<label for="name">Name:</label> | |
<input type="text" id="name" name="name" required> | |
</div> | |
<div class="field"> | |
<label for="email">Email:</label> | |
<input type="email" id="email" name="email" required> | |
</div> | |
<div class="field"> | |
<label for="message">Message:</label> | |
<textarea id="message" name="message" required></textarea> | |
</div> | |
<div class="field"> | |
<button type="submit">Send</button> | |
</div> | |
</form> | |
</div> | |
<script src="jquery-2.1.0.min.js"></script> | |
<script src="app.js"></script> | |
</body> | |
</html> | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$(function() { | |
// Get the form. | |
var form = $('#ajax-contact'); | |
// Get the messages div. | |
var formMessages = $('#form-messages'); | |
// Set up an event listener for the contact form. | |
$(form).submit(function(e) { | |
// Stop the browser from submitting the form. | |
e.preventDefault(); | |
// Serialize the form data. | |
var formData = $(form).serialize(); | |
// Submit the form using AJAX. | |
$.ajax({ | |
type: 'POST', | |
url: $(form).attr('action'), | |
data: formData | |
}) | |
.done(function(response) { | |
// Make sure that the formMessages div has the 'success' class. | |
$(formMessages).removeClass('error'); | |
$(formMessages).addClass('success'); | |
// Set the message text. | |
$(formMessages).text(response); | |
// Clear the form. | |
$('#name').val(''); | |
$('#email').val(''); | |
$('#message').val(''); | |
}) | |
.fail(function(data) { | |
// Make sure that the formMessages div has the 'error' class. | |
$(formMessages).removeClass('success'); | |
$(formMessages).addClass('error'); | |
// Set the message text. | |
if (data.responseText !== '') { | |
$(formMessages).text(data.responseText); | |
} else { | |
$(formMessages).text('Oops! An error occured and your message could not be sent.'); | |
} | |
}); | |
}); | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// My modifications to mailer script from: | |
// http://blog.teamtreehouse.com/create-ajax-contact-form | |
// Added input sanitizing to prevent injection | |
// Only process POST reqeusts. | |
if ($_SERVER["REQUEST_METHOD"] == "POST") { | |
// Get the form fields and remove whitespace. | |
$name = strip_tags(trim($_POST["name"])); | |
$name = str_replace(array("\r","\n"),array(" "," "),$name); | |
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); | |
$message = trim($_POST["message"]); | |
// Check that data was sent to the mailer. | |
if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { | |
// Set a 400 (bad request) response code and exit. | |
http_response_code(400); | |
echo "Oops! There was a problem with your submission. Please complete the form and try again."; | |
exit; | |
} | |
// Set the recipient email address. | |
// FIXME: Update this to your desired email address. | |
$recipient = "[email protected]"; | |
// Set the email subject. | |
$subject = "New contact from $name"; | |
// Build the email content. | |
$email_content = "Name: $name\n"; | |
$email_content .= "Email: $email\n\n"; | |
$email_content .= "Message:\n$message\n"; | |
// Build the email headers. | |
$email_headers = "From: $name <$email>"; | |
// Send the email. | |
if (mail($recipient, $subject, $email_content, $email_headers)) { | |
// Set a 200 (okay) response code. | |
http_response_code(200); | |
echo "Thank You! Your message has been sent."; | |
} else { | |
// Set a 500 (internal server error) response code. | |
http_response_code(500); | |
echo "Oops! Something went wrong and we couldn't send your message."; | |
} | |
} else { | |
// Not a POST request, set a 403 (forbidden) response code. | |
http_response_code(403); | |
echo "There was a problem with your submission, please try again."; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment