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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 09:44:43393parcourir

How to Validate Google reCAPTCHA v3 on the Server Side with PHP?

Validation de Google reCAPTCHA v3 côté serveur en PHP

Contexte :

Google reCAPTCHA v3 est une version améliorée de le système CAPTCHA populaire utilisé pour prévenir le spam et les abus. Il s'appuie sur des modèles d'apprentissage automatique pour analyser le comportement des utilisateurs et fournit un score d'analyse des risques plutôt qu'un simple mécanisme défi-réponse.

Validation côté serveur :

Pour valider reCAPTCHA v3 côté serveur en utilisant PHP, vous devez effectuer les étapes suivantes :

  1. Récupérer les données POST :

    • Extraire le Valeur 'g-recaptcha-response' à partir des données POST reçues lors de la soumission du formulaire côté client.
  2. Définir les paramètres de la requête :

    • Spécifiez votre clé secrète, la valeur 'g-recaptcha-response' et l'adresse IP du client dans un tableau.
  3. Préparez la requête HTTP :

    • Créez un contexte HTTP avec la méthode de requête, les en-têtes et les données POST spécifiés.
  4. Exécuter la requête :

    • Utilisez file_get_contents() avec le contexte HTTP pour envoyer la requête à l'API de reCAPTCHA.
  5. Analyser la réponse :

    • Décoder la réponse JSON reçue de reCAPTCHA et extraire le paramètre 'success'.
  6. Valider reCAPTCHA :

    • Renvoyer 'vrai' si 'succès' est 'vrai', et 'faux' sinon.

Exemple de code :

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

Utilisation :

Appelez simplement la fonction isValid() pour valider le jeton reCAPTCHA reçu du côté client.

<code class="php">if (isValid()) {
    // User passed reCAPTCHA
} else {
    // User failed reCAPTCHA
}</code>

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