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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 13:18:021021parcourir

How to Verify Google reCAPTCHA v3 on the Server Side in PHP?

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

Problème : Vous avez implémenté Google reCAPTCHA v3 avec une case à cocher sur le front-end, mais vous rencontrez des difficultés pour le valider côté serveur. Le formulaire est soumis même lorsque le captcha n'est pas valide.

Solution :

Pour gérer efficacement la validation Google reCAPTCHA v3 côté serveur, il est crucial d'utiliser les requêtes POST . Voici une solution :

<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>

Explication :

  • La fonction isValid() est conçue pour vérifier reCAPTCHA v3 à l'aide d'une requête POST.
  • Il envoie la clé secrète, la réponse captcha et l'adresse IP de l'utilisateur à l'API de Google.
  • La fonction analyse la réponse de l'API et renvoie vrai si le captcha est valide, faux s'il n'est pas valide et null si une erreur se produit lors de la requête.

Utilisation :

Dans votre code, écrivez simplement :

if (isValid()) {
  // The user has passed the captcha validation.
} else {
  // The user has failed the captcha validation.
}

Remarque : Assurez-vous de remplacer [VOTRE CLÉ SECRET] par votre clé secrète reCAPTCHA réelle dans l'extrait de code fourni.

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