PHP

Ajout du captcha cloudflare sur page d'inscription

Non Résolu

Bonjour ou bonsoir selon l'heure ou vous regarder la publication. J'aurais besoin d'aide pour ajouter le captcha Cloudflare car je l'ai intégré mais il ne sert a rien car on peu s'inscrire sans avoir a vérifier le captcha. Voici mon code actuel et j'ai cacher mon code cloudflare(j'ai utiliser le template de Site2) :

<?php

    require_once('../include.php');
    
    if(isset($_SESSION['id'])){
        header('Location: /');
        exit;
    }
    
    if(!empty($_POST)){
        extract($_POST);
            
        if(isset($_POST['inscription'])){
            
            [$err_pseudo, $err_mail, $err_password] = $_Inscription->verification_inscription($pseudo, $mail, $confmail, $password, $confpassword);
                        
        }
    }    


?>
<!doctype html>
<html lang="fr">
    <head>
        <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
        <?php    
            require_once('../_head/meta.php');
            require_once('../_head/link.php');
            require_once('../_head/script.php');
        ?>
        <title>BibouNetwork - Inscription</title>
    </head>
    <body>
        <?php    
            require_once('../_menu/menu.php');
        ?>
        <div class="container">
            <div class="row">
                <div class="col-3"></div>
                <div class="col-6">
                    <h1>Inscription</h1>
                    <form method="post">
                        <div class="mb-3">
                            <?php if(isset($err_pseudo)){ echo '<div>' . $err_pseudo . '</div>'; }?>
                            <label class="form-label">Pseudo</label>
                            <input class="form-control" type="text" name="pseudo" value="<?php if(isset($pseudo)){ echo $pseudo; }?>" placeholder="Pseudo"/>
                        </div>
                        <div class="mb-3">
                            <?php if(isset($err_mail)){ echo '<div>' . $err_mail . '</div>'; }?>
                            <label class="form-label">Mail</label>
                            <input class="form-control" type="email" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" placeholder="Mail"/>
                        </div>
                        <div class="mb-3">
                            <label class="form-label">Confirmation du mail</label>
                            <input class="form-control" type="email" name="confmail" value="<?php if(isset($confmail)){ echo $confmail; }?>" placeholder="Confirmation mail"/>
                        </div>
                        <div class="mb-3">
                            <?php if(isset($err_password)){ echo '<div>' . $err_password . '</div>'; }?>
                            <label class="form-label">Mot de passe</label>
                            <input class="form-control" type="password" name="password" value="<?php if(isset($password)){ echo $password; }?>" placeholder="Mot de passe"/>
                        </div>
                        <div class="mb-3">
                            <label class="form-label">Confirmation du mot de passe</label>
                            <input class="form-control" type="password" name="confpassword" value="" placeholder="Confirmation mot de passe"/>
                        </div>
                        <div class="cf-turnstile" data-sitekey="CODECAPTCHA" data-callback="javascriptCallback"></div>
                        <div class="mb-3">
                            <button type="submit" name="inscription" class="btn btn-primary">Inscription</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <?php    
            require_once('../_footer/footer.php');
        ?>
    </body>
</html>

Est que vous pouvez m'aidez svp ?

Merci en avance de l'aide.

Bonne journée ou soirée selon l'heure encore.

294 vues
28 janvier 2024 à 12:16 (Édité)
Cette pub permet au site de vivre ...

8 commentaires

Hello @Flomir ,

Je suis en train de transférer les fichiers du site sur mon raspberrypi avec apache mais j'arrive pas a mettre PHP sur le linux. Mais sinon je vais tester sur une machine chez moi et je vous retiens au courant

Hello @Bibou1494,


Des news sur ton problème ?


Bonne journée,

Florent.

Bonjour, je pense que cela viens du serveur car ma page pour voir les profil j'ai juste ajouter un rôle et puis erreur 500 donc je pense que je vais laisser tomber même si sa m'énerve.

Sinon merci quand même d'avoir essayer de m'aider encore une fois.

Bonne journée.

Hello @Bibou1494,


Une erreur 500, c'est une erreur soit du serveur, soit de ton code...


S'il s'agit d'une erreur dans le code :


Tu peux debugger ton code au fur et à mesure de son exécution à l'aide de la commande echo suivi d'un exit.


Le fait d'afficher quelque chose et de le voir à l'écran, te fais dire que tout ce qui vient d'au-dessus ne provoque pas l'erreur 500.


Donc après tu déplaces le echo "bidule"; et au fur et à mesure, tu peux trouver d'où vient le soucis.


Mais oui 000webhost c'est bien naze quand tu ne paies pas 😋


Redis-nous,

Florent.

Bonsoir, j'ai un problème c'est que en modifiant le code pour faire ça

<?php


	require_once('../include.php');
	
	if(isset($_SESSION['id'])){
		header('Location: /');
		exit;
	}
	
	if (!empty($_POST)) {
    extract($_POST);
 
    if (isset($_POST['inscription'])) {
        // Vérification de la réponse captcha
        $turnstileResponse = $_POST['cf-turnstile-response']; // Obtenez la réponse Turnstile du formulaire
        $secretKey = "VOTRE_CLE_SECRETE"; // Remplacez par votre clé secrète Turnstile
        $verifyUrl = "https://challenges.cloudflare.com/turnstile/v0/siteverify";
 
        $response = file_get_contents($verifyUrl . "?secret=" . $secretKey . "&response=" . $turnstileResponse);
        $responseData = json_decode($response);
 
        if ($responseData->success) {
            // La vérification du captcha a réussi, continuez avec le reste de la logique d'inscription
            [$err_pseudo, $err_mail, $err_password] = $_Inscription->verification_inscription($pseudo, $mail, $confmail, $password, $confpassword);
        } else {
            // La vérification du captcha a échoué, traitez l'erreur
            // Par exemple, définissez un message d'erreur à afficher à l'utilisateur
            $err_captcha = "Vérification du captcha échouée. Veuillez réessayer.";
        }
    }
}


?>

Cela me donne une erreur 500, donc je sais pas pourquoi cela m'arrive, j'utilise le service gratuit d'hostinger aussi donc je sais pas si cela viens de hostinger. Sinon merci d'avoir essayer de m'aider quand même.

Bonsoir @Bibou1494 !


Voici un exemple d'implémentation de ton code pour l'ajout du captcha Cloudfare :


if (!empty($_POST)) {
    extract($_POST);

    if (isset($_POST['inscription'])) {
        // Vérification de la réponse captcha
        $turnstileResponse = $_POST['cf-turnstile-response']; // Obtenez la réponse Turnstile du formulaire
        $secretKey = "VOTRE_CLE_SECRETE"; // Remplacez par votre clé secrète Turnstile
        $verifyUrl = "https://challenges.cloudflare.com/turnstile/v0/siteverify";

        $response = file_get_contents($verifyUrl . "?secret=" . $secretKey . "&response=" . $turnstileResponse);
        $responseData = json_decode($response);

        if ($responseData->success) {
            // La vérification du captcha a réussi, continuez avec le reste de la logique d'inscription
            [$err_pseudo, $err_mail, $err_password] = $_Inscription->verification_inscription($pseudo, $mail, $confmail, $password, $confpassword);
        } else {
            // La vérification du captcha a échoué, traitez l'erreur
            // Par exemple, définissez un message d'erreur à afficher à l'utilisateur
            $err_captcha = "Vérification du captcha échouée. Veuillez réessayer.";
        }
    }
}

Bonne soirée,

Florent

Le problème c'est que je sais pas vraiment codé car j'ai utilisé la template du site2. Donc je sais pas vraiment que faire. Mais sinon j'ai peut être compris donc je vais regarder la Doc cloudflare et je verrais si j'ai trouver comment faire.

Hello @Bibou1494,


Je pense qu'il te manque la vérification en back-end pour vérifier si le captcha a été coché ou non. S'il n'y a pas de vérification en back-end, les utilisateurs et les bots pourront passer le captcha sans problème qu'il soit coché ou non.

Le problème ne vient pas du captcha de Cloudflare car celui-ci est utilisé par beaucoup de sites depuis (et Sitedudev l'utilisera bientôt pour remplacer le captcha de Google) donc tu dois effectuer une vérification côté serveur

Cette pub permet au site de vivre ...