Es ist irgendwie komisch, dass Googles Dokumentation für Recaptcha nicht so hilfreich ist, wie ich dachte, dass es sein würde. Ich wurde gebeten, ein derzeit bestehendes Formular zu verwenden (das mehrmals täglich gespammt wird) und es mit dem neuen Google-Recaptcha zu aktualisieren. Es gibt viele Tutorials für das alte Captcha, aber nicht so viele für das neue. Ich möchte im Grunde nur ein einfaches Formular, um Name, E-Mail, Nachricht erfassen und ersetzen Sie dann meine aktuellen "Anti-Bot-Feld" mit dem Recaptcha (Ich habe ein Feld, das Sie gefragt, was 2 + 2 war und wenn Sie etwas eingegeben, aber 4, würde es nicht senden). Wenn die erforderlichen Felder gültig sind und das Recaptcha gültig ist, möchte ich eine E-Mail mit dem Inhalt der Formularfelder senden.PHP-Formular + Google reCAPTCHA
Ich ging durch die einfachen Schritte:
registriert meiner Seite die Schlüssel zu bekommen
dieses Snippet hinzugefügt in meinem Kopf tag:
<script src='https://www.google.com/recaptcha/api.js'></script>
hinzugefügt Dieser Ausschnitt am Ende meines Formulars:
<div class="g-recaptcha" data-sitekey="#MYKEY#"></div>
An diesem Punkt wird die recaptcha gerade fein zeigt sich. Aber der serverseitige Teil ist ein wenig verwirrend.
Dies ist meine aktualisierte Kontaktform mit dem recaptcha zeigt:
<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>
Und hier ist meine aktuelle POST Seite (Ich bin nicht sicher, wo in dem recaptcha Code hinzufügen):
<?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>';
}
}
?>
Jede Hilfe ist willkommen. Ich habe das Gefühl, dass dies ein ziemlich gewöhnliches Volk mit Leuten sein könnte, die versuchen, es in ihre aktuellen Arbeitsformen umzusetzen.
FWIW, gab ich Google Re-Captcha zugunsten einer Lösung individuelle captcha in meinem Rahmen gebaut. Aus irgendeinem Grund konnte ich das Widget nicht in allen Browsern zuverlässig anzeigen lassen. – Sparky