Merhaba hocalarım, bir siteme reCAPTCHA v2 Ben Robot Değilim doğrulaması ekledim.
Arayüz:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="form-login">
<div class="col-xs-12 m-t-5">
<div class="g-recaptcha" data-sitekey="6LxxxxxxxxxxxxxxxxxxxH213edaı2312Rh"></div>
</div>
</div>
Arkaplan:
// reCAPTCHA Token Kontrolü
$recaptchaResponse = $_POST['recaptcha_response'] ?? '';
if (empty($recaptchaResponse)) {
//http_response_code(400); // Bad Request
echo json_encode(['success' => false, 'message' => 'reCAPTCHA doğrulaması başarısız.']);
exit;
}
// Google reCAPTCHA API doğrulaması
$recaptchaSecretKey = '6Lxxxxxxxxxxxxxxgqw123dsaa213daL';
$recaptchaApiUrl = 'https://www.google.com/recaptcha/api/siteverify';
$response = file_get_contents($recaptchaApiUrl . '?secret=' . $recaptchaSecretKey . '&response=' . $recaptchaResponse);
$responseKeys = json_decode($response, true);
if (empty($responseKeys['success']) || !$responseKeys['success'] || ($responseKeys['success'] && isset($responseKeys['score']) && $responseKeys['score'] < 0.5)) {
//http_response_code(403); // Forbidden
$message = isset($responseKeys['error-codes']) ? implode(', ', $responseKeys['error-codes']) : 'reCAPTCHA doğrulaması başarısız. Lütfen tekrar deneyin.';
echo json_encode(['success' => false, 'message' => $message]);
exit;
}
Şimdi sorum şu kullanıcı bir istek attığında eğer ki mail adresi, şifre vs yanlışsa onun hatası döndürüyorum ve kullanıcı 2. defa istek attığında "{success: false, message: "timeout-or-duplicate"} " hatası geliyor. İnternete baktım 2dk içerisinde aynı google doğrulama isteği gittiği için oluyormuş ama çözümü için tam işe yarar bir şey göremedim. Sitesine google doğrulaması ekleyen hocalarım rica etsem kodlarımı inceleyeleyip bilgi hatam hakkında bilgi verebilir misiniz?