Thật kỳ lạ khi tài liệu của Google về recaptcha không hữu ích như tôi nghĩ. Tôi đã được yêu cầu lấy một biểu mẫu hiện tại (đang bị gửi spam một vài lần một ngày) và cập nhật nó bằng biểu mẫu mới của Google. Có rất nhiều hướng dẫn ở đó cho hình ảnh xác thực cũ, nhưng không nhiều cho hướng dẫn mới. Về cơ bản, tôi chỉ muốn một dạng đơn giản để lấy tên, email, tin nhắn và sau đó thay thế "trường chống bot" hiện tại bằng recaptcha (tôi đã sử dụng một trường về cơ bản đã hỏi bạn 2 + 2 là gì và nếu bạn đã nhập gì, nhưng 4, nó sẽ không gửi). Nếu các trường bắt buộc là hợp lệ và recaptcha là hợp lệ, thì tôi muốn nó gửi cho tôi một email với nội dung của các trường biểu mẫu.Biểu mẫu PHP + Google reCAPTCHA
tôi đã đi qua các bước đơn giản:
đăng ký trang web của tôi để có được các phím
thêm đoạn này bên trong thẻ đầu của tôi:
<script src='https://www.google.com/recaptcha/api.js'></script>
thêm đoạn mã này ở cuối biểu mẫu của tôi:
<div class="g-recaptcha" data-sitekey="#MYKEY#"></div>
Tại thời điểm này, recaptcha chỉ hiển thị tốt. Nhưng phần phía máy chủ là một chút bối rối.
Đây là hình thức của tôi được cập nhật tiếp xúc với reCAPTCHA hiển thị:
<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>
Và đây là trang POST hiện tại của tôi (tôi không chắc chắn nơi để thêm vào đoạn code reCAPTCHA):
<?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>';
}
}
?>
Bất kỳ trợ giúp đều được chào đón. Tôi cảm thấy như thế này có thể là một người khá phổ biến với những người cố gắng để thực hiện nó vào các hình thức làm việc hiện tại của họ.
FWIW, tôi bị bỏ rơi Google lại mã xác nhận ủng hộ một giải pháp tùy chỉnh hình ảnh xác thực được xây dựng vào khuôn khổ của tôi. Vì lý do gì đó, tôi không thể tải tiện ích hiển thị một cách đáng tin cậy trong tất cả các trình duyệt. – Sparky