Ik ben een redelijke amateur op het gebied van PHP.
Naast mijn normale dagelijkse werk ben ik bezig met fotografie en ben bezig om een nieuwe website te maken.
Dit gaat in de basis best goed. Echter ik krijg op mijn huidige site redelijk wat spam binnen via het contact formulier.
Dit wil ik dan ook aanpakken met recaptcha v3. Ik heb netjes de sleutels opgevraagd en een test opstelling aangemaakt en de sleutels ingevuld.
Als ik alle velden nu in het formulier invul dan lijkt het goed gekeurd maar ik ontvang geen mail.
Hier onder het script wat ik heb gebruikt.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Google reCAPTCHA v3</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_RECAPTCHA_SITE_KEY"></script>
<script>
grecaptcha.ready(function () {
grecaptcha.execute('YOUR_RECAPTCHA_SITE_KEY', { action: 'contact' }).then(function (token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});
});
</script>
</head>
<body>
<section class="section">
<div class="container">
<div class="columns">
<div class="column is-half">
<form method="POST">
<h1 class="title">
reCAPTCHA v3 testformulier
</h1>
<div class="field">
<label class="label">Name</label>
<div class="control">
<input type="text" name="name" class="input" placeholder="Name" required>
</div>
</div>
<div class="field">
<label class="label">Email</label>
<div class="control">
<input type="email" name="email" class="input" placeholder="Email Address" required>
</div>
</div>
<div class="field">
<label class="label">Message</label>
<div class="control">
<textarea name="message" class="textarea" placeholder="Message" required></textarea>
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button type="submit" class="button is-link">Send Message</button>
</div>
</div>
<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
</form>
</div>
</div>
</div>
</section>
</body>
<?php // Check if form was submitted:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 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
}
} ?>
</html>
Nogmaals ik ben een leek op dit gebied.
Ik begrijp ook niet hoe recaptcha ziet naar welk mail adres het gestuurd moet worden.
Wie kan mij helpen.
Gr,
Roland van Haastregt