Integreren van reCAPTCHA
Ik ben bezig om reCAPTCHA in te bouwen in mijn registratieformulier.
Ik heb deze javascriptregel in de html erbij gezet:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
En de volgende regel aan het formulier toegevoegd binnen de form:
<div class="g-recaptcha" data-sitekey="mijnsitekey even verwijderd"></div>
Ik kan nog steeds registreren zonder dat ik het selectievakje aanvink, wat doe ik fout?
Je zult echt nog een serverside controle met PHP moeten uitvoeren.
https://developers.google.com/recaptcha/docs/display
Welk gedeelte vergeet ik nu dan?
Moet ik deze regel nog toevoegen aan het formulier?
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
async defer>
</script>
Gewijzigd op 03/12/2020 10:03:11 door Sietsko Bos
Dus kijk hier eens verder:
https://developers.google.com/recaptcha/docs/verify
Het komt erop neer dat je het formulier element g-recaptcha-response (dus $_POST['g-recaptcha-response']), samen met je secret-key, moet doorgeven aan het API-endpoint: https://www.google.com/recaptcha/api/siteverify. Dan krijg je een JSON-request terug waarin staat of iemand goedgekeurd is, of wat er fout is gegaan. Aan de hand hiervan kan jij in je validatie een mooie foutmelding genereren.
Gewijzigd op 03/12/2020 10:43:12 door - Ariën -
Ik ben er eerst mee gestopt omdat het voor mij te ingewikkeld is om in te bouwen.
Dus ik ga externe hulp inroepen om het in te bouwen.
Dank voor je hulp.
https://stevencotterill.com/articles/adding-google-recaptcha-v3-to-a-php-form
met deze validatie ben je er al:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php // Check if form was submitted:
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['recaptcha_response'])) {
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = 'YOUR_RECAPTCHA_SECRET_KEY';
$recaptcha_response = $_POST['recaptcha_response'];
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
// Take action based on the score returned:
if ($recaptcha->score >= 0.5) {
// Verified - send email
} else {
// Not verified - show form error
}
} ?>
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['recaptcha_response'])) {
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = 'YOUR_RECAPTCHA_SECRET_KEY';
$recaptcha_response = $_POST['recaptcha_response'];
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
// Take action based on the score returned:
if ($recaptcha->score >= 0.5) {
// Verified - send email
} else {
// Not verified - show form error
}
} ?>
Gewijzigd op 03/12/2020 13:56:54 door - Ariën -
Is het geen idee om een eigen CAPTCHA gebruiken vanaf een eigen server?
Ad Fundum op 03/12/2020 19:33:19:
Ik vind het zelf geen handige keuze om belangrijke dingen zoals een CAPTCHA van een andere site af te laten hangen waar je geen controle over hebt.
Is het geen idee om een eigen CAPTCHA gebruiken vanaf een eigen server?
Is het geen idee om een eigen CAPTCHA gebruiken vanaf een eigen server?
Het ligt een beetje aan wat voor site je hebt.
Ook van de grotere sites weet ikd at die ReCaptcha hebben, en daar zit jijst de kracht achter dat die aan de hand van diverse factoren, neurale netwerken en kunstmatige intelligentie kunnen bepalen of iemand een bot is, of niet.
ReCaptcha V3 is zelfs captcha-loos, volledig geautomatiseerd en werkt op een score.
Gewijzigd op 06/12/2020 16:18:37 door - Ariën -