-
-
Save AaronTraas/9533041 to your computer and use it in GitHub Desktop.
| <?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."; | |
| } | |
| ?> |
Thanks for this Aaron. I can't seem to get a reply to address working with this. Any clues?
Thanks! I'm also using this form via the Treehouse Blog.
But I noticed it will fail for anyone with an @yahoo address because of Yahoo's aggressive anti-spamming DMARC policy change (appears to send, but mail is never received).
Workaround was simple. Just change the "From: " header to your own domain, and put the user's email in a "Reply-to" field. Just change line 35 above to:
// Build the email headers.
$email_headers = "From: Example Webmaster <[email protected]>\r\nReply-To: $name <$email>";
Just a thought, I have a situation where there are more than one contact form on the same page (The page has separate tabbed areas each with a contact form and the form sends specific data dependent on which tabbed area the user is in. The issue I notice with this scenario is that app.js sends back to the div ID #form-messages the success message.
I guess I could send back to a different div ID each time but that doesn't make sense to me. Is there a way of dynamically doing the success message without doing silly things like creating separate app.js files?
Sorry if my questions are newbie but I'm not yet experienced :-)
Thanks!
Thanks!
Thanks a lot
I have a problem. If email have a dot in name (example: [email protected]), you didn't get an email to this address, although the script reports successful transmission.
I would also recommend using this php mail library instead:
https://github.com/PHPMailer/PHPMailer
How can a clear the form data for select options
I came here from the treehouse site and I have a problem. Everything seems fine but when I click send nothing happens. Nothing at all, no error, no email, just nothing. Any help you be great. Thank you.