Αντικατάσταση Google CAPTCHA με cloudflare turnstile
- Σύνδεση στο https://dash.cloudflare.com/
- Μπαίνουμε στο application security > turnstile
- Κάνουμε click add widget
- Προσθέτουμε hostnames
- Αποθηκεύουμε το widget και κρατάμε το public/private key που μας δινει γιατι θα τα χρησιμοποιήσουμε αργότερα
-
<body> <div id="captcha" data-size="invisible"></div> <button id="send">Send</button> <script src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstile&render=explicit" async defer></script> <script> let widgetId; function onloadTurnstile() { // Ensures the element exists BEFORE rendering widgetId = turnstile.render('#captcha', { sitekey: 'YOUR_PUBLIC_KEY', callback: function(token) { console.log("Callback token:", token); } }); } document.getElementById("send").addEventListener("click", () => { const token = turnstile.getResponse(widgetId); console.log("Token on submit:", token); }); </script> </body> - Βάζουμε στο script πάνω και όταν κάνουμε send έχουμε πλέον το token που θα σταλθεί στο backend
- Στο backend μετά κάνουμε το παρακάτω για επιβεβαίωση οτι έιναι οκ να προχωρήσουμε
-
$token = $_POST['cf-turnstile-response']; // <-- Token from Turnstile $secret = "YOUR_SECRET_KEY"; $verify = curl_init("https://challenges.cloudflare.com/turnstile/v0/siteverify"); curl_setopt($verify, CURLOPT_POST, true); curl_setopt($verify, CURLOPT_RETURNTRANSFER, true); curl_setopt($verify, CURLOPT_POSTFIELDS, [ 'secret' => $secret, 'response' => $token ]); $response = json_decode(curl_exec($verify), true); if ($response["success"]) { echo "HUMAN VERIFIED!"; } else { echo "FAILED"; }