Maison  >  Article  >  développement back-end  >  Comment vérifier Google reCAPTCHA v3 côté serveur avec PHP ?

Comment vérifier Google reCAPTCHA v3 côté serveur avec PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 05:10:27485parcourir

How to Verify Google reCAPTCHA v3 on the Server Side with 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn