如何将reCAPTCHA集成到现有的php联系人表单中?

时间:2019-05-28 11:33:12

标签: php html ajax forms

我正在尝试将reCAPTCHA与我现有的php联系表集成。请有人帮忙吗?我已经将相关代码添加到html表单中,我只是不知道如何修改我的mailer.php代码以执行必要的后端检查和处理表单数据。我是php的新手,我使用的代码是我从Web站点上改编而成的。该表单还使用ajax和查询表单验证。

<form id="form-ajax" class="form-ajax" method="post" action="mailer.php">
    <input id="name" class="form-name" type="text" name="name" placeholder="Name" required>
    <span class="error"></span>
    <input id="email" class="form-email" type="email" name="email" placeholder="Email Address" required>
    <span class="error"></span>
    <textarea id="message" class="form-message" name="message" placeholder="Message..." required></textarea>
    <span class="error"></span>
    <div class="g-recaptcha" data-sitekey="my-site-key"></div>
    <button class="form-submit" type="submit" name="submit">Send</button>
 </form>
    <script>
        $(function() {

          // Get the form
          var form = $('#form-ajax');

          // Get the messages div
          var formMessages = $('#form-messages');

          // Set up an event listener for the contact form
          $(form).submit(function(event) {

          // Stop the browser from submitting the form
          event.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.');
            }
        });

      });

    });
  </script>
<?php

    // Only process POST requests
    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
        $recipient = "email@example.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.";
    }

?>

0 个答案:

没有答案