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

Mary-Kate Olsen
Libérer: 2024-11-01 05:10:27
original
480 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!