Maison > Article > développement back-end > Comment vérifier Google reCAPTCHA v3 côté serveur avec PHP ?
Vérification de Google reCAPTCHA v3 côté serveur avec PHP
La nouvelle case à cocher Google reCAPTCHA s'intègre de manière transparente dans le front-end, mais son serveur- la gestion secondaire à l'aide de PHP peut poser des défis. Pour le traiter efficacement sur le serveur, il est crucial de comprendre les principales différences par rapport aux versions précédentes de reCAPTCHA.
Ancienne validation de reCAPTCHA
L'extrait de code fourni pour la question démontre une approche utilisée pour les versions antérieures de reCAPTCHA. Cependant, il ne convient pas à reCAPTCHA v3 :
<code class="php">require_once('recaptchalib.php'); // ... if (!$resp->is_valid) { $errCapt = '<p style="color:#D6012C ">The CAPTCHA Code was not entered correctly.</p>'; }</code>
Considérations de sécurité
Il convient de noter que la méthode de requête GET utilisée dans la solution donnée expose votre clé privée. Pour une sécurité renforcée, Google recommande d'utiliser plutôt une requête POST.
Vérification de reCAPTCHA v3 via POST
Pour valider avec succès reCAPTCHA v3 côté serveur à l'aide de PHP, suivez ces étapes :
<code class="php">function isValid() { try { $url = 'https://www.google.com/recaptcha/api/siteverify'; $data = ['secret' => '[YOUR SECRET KEY]', 'response' => $_POST['g-recaptcha-response'], 'remoteip' => $_SERVER['REMOTE_ADDR']]; $options = [ 'http' => [ 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data) ] ]; $context = stream_context_create($options); $result = file_get_contents($url, false, $context); return json_decode($result)->success; } catch (Exception $e) { return null; } }</code>
Cette fonction retournera vrai si l'utilisateur a réussi le test reCAPTCHA, faux sinon, et nul en cas d'erreur. En utilisant cette fonction, vous pouvez authentifier efficacement les utilisateurs et atténuer l'activité du spam et des robots.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!