PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Friday, August 26, 2022

[FIXED] How to make a contact form in wordpress call another php file

 August 26, 2022     forms, html, php, wordpress     No comments   

Issue

I am trying to add a small contact form in the sidebar of my WordPress site. I transferred my code from it's original html file into the appropriate WordPress php files. The only thing that isn't working is the contact form.

When I click on the send button it goes to the mailer.php file in the URL bar instead of sending the message.

This is the form:

<div class="w3-container w3-padding w3-white">
<h4 class="w3-left">Contact</h4>
<br> <br>
<div id="form-messages">&nbsp;</div>
<form id="ajax-contact" class="w3-container w3-margin" action="mailer.php" method="post">
<div class="w3-row w3-section field"><label for="name">Name:</label> <input id="name" class="w3-input w3-border" name="name" required="" type="text"></div>
<div class="w3-row w3-section field"><label for="email">Email:</label> <input id="email" class="w3-input w3-border" name="email" required="" type="email"></div>
<div class="w3-row w3-section field"><label for="message">Message:</label> <textarea id="message" class="w3-input w3-border" name="message" required=""></textarea></div>
<div class="field"><button class="w3-button w3-blue w3-ripple w3-section" type="submit">Send</button></div>
</form></div> 

This is the mailer.php file:

<?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 = "jerry@jerrylcrews.com";

        // 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.";
    }

Solution

Add a function like this to the onClick event.

function sendmail() {
    var name = document.getElementById("name").value;
    var email = document.getElementById("email").value;
    var message = document.getElementById("message").value;

    var SendInfo= {     "name":name,
                        "email":email,
                        "message":message   };
    $.ajax({
            type: 'POST',
            url: 'mailer.php',
            data: SendInfo,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            traditional: true,
            success: function (data) {
                // Whatever
            }
    });
}


Answered By - Mason Stedman
Answer Checked By - Marilyn (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing