PHP formulaire de + Google reCAPTCHA

C'est un peu bizarre que Google documents pour recaptcha n'est pas aussi utile que je pensais que ça allait être. On m'a demandé de prendre un courant formulaire existant (qui est de recevoir des envois quelques fois par jour) et de le mettre à jour avec Google nouveau recaptcha. Il y a beaucoup de tutoriels pour les vieux captcha, mais pas tant pour le nouveau. En gros, je veux juste un simple formulaire de capture, nom, email, message, puis remplacer mon actuel "anti-bot" en recaptcha (j'ai utilisé un champ que, fondamentalement vous a demandé ce que 2+2 a été et si vous avez entré n'importe quoi, mais de 4, il ne serait pas envoyer). Si les champs requis sont valides et recaptcha est valide, alors je tiens à m'envoyer un email avec le contenu des champs du formulaire.

Je suis allé à travers les étapes simples:

  1. inscrit mon site pour obtenir les clés

  2. ajouté ce morceau de code à l'intérieur de ma tête tag:

    <script src='https://www.google.com/recaptcha/api.js'></script>
  3. ajouté cet extrait à la fin de mon formulaire:

    <div class="g-recaptcha" data-sitekey="#MYKEY#"></div>

À ce stade, le captcha s'affiche très bien. Mais la partie côté serveur est un peu déroutant.

C'est mon jour formulaire de contact avec le recaptcha montrant:

<form method="post" action="contact-post.php">
  <label>Your Name (required):</label>
    <input name="name" type="text" placeholder="Enter your name here">
  <label>Email Address (required):</label>
    <input name="email" type="email" placeholder="Enter your email address here">
  <label>Your Message (required):</label>
    <textarea name="message" placeholder="Write your message here"></textarea>
  <div style="margin-top:20px;" class="g-recaptcha" data-sitekey="#MYKEY#"></div>
  <input id="submit" name="submit" type="submit" value="Submit Form">
</form>

Et voici mon POST de la page (je suis pas sûr de l'endroit où ajouter dans le recaptcha code):

<?php
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $human = $_POST['human'];
        $from = 'From: My Website';
        $to = '[email protected]';
        $subject = 'Request Form';

        $body = "Name: $name \n E-Mail: $email \nMessage:\n$message";

        if ($_POST['submit']) {
            if ($email != '') {
                if ($human == '4') {                 
                    if (mail ($to, $subject, $body, $from)) { 
                        echo '<p>You have successfully submitted your information to PS4RS. Subscribers to our mailing list will begin to periodically receive updates.</p>';
                    } else { 
                        echo '<p>Something went wrong, go back and try again!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; 
                    } 
                } else if ($_POST['submit'] && $human != '4') {
                    echo '<p>You answered the anti-spam question incorrectly!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>';
                }
            } else {
                echo '<p>You need to fill in all required fields!!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>';
            }
        }
    ?>

Toute aide est la bienvenue. J'ai l'impression que cela pourrait être une assez fréquent que les gens avec les gens, en essayant de le mettre en œuvre dans leurs formes de travail.

  • FWIW, je l'ai abandonné Google re-captcha en faveur d'une coutume solution de captcha intégré dans mon cadre. Pour quelque raison que ce soit, je ne pouvais pas obtenir le widget pour afficher de manière fiable dans tous les navigateurs.
InformationsquelleAutor Kevin May | 2014-12-28