Hey ik heb een contactformulier ontwikkeld en wil gebruik maken van google recaptcha 3 als beveiliging tegen spam.
De captcha steekt er in maar beschouwd mij als spam.
Kan iemand zeggen wat ik fout doe?
Post zowel php als jquery gedeelte.

<html>
<head>
<link rel="stylesheet" type="text/css" href="../../css/huisstijl.css">
<link rel="stylesheet" type="text/css" href="../../css/sjabloon.css">
<link rel="stylesheet" type="text/css" href="../../css/blokken.css">
<link rel="stylesheet" type="text/css" href="../../css/navigatie.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
<title>E-services DVC Heilig Hart</title>
<script src="https://www.google.com/recaptcha/api.js?render=6Ldu8MIUAAAAAFEJd1Txxme6GNvnR72V0QmwyJrM"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<style>
#contactblokken
{
display:flex;
flex-direction:row;	
}
ol
{
float:left;
margin-top:-10px;
}
ol li
{
list-style-type:none;
margin:8pt;	
}
label
{
font-family:verdana;
font-size:10pt;	
width:110px;
float:left;
}
#naam
{
width:200px;	
}
#voornaam
{
width:200px;	
}
#email
{
width:200px;	
}
.button
{
color:white;
font-size:10pt; 
font-weight:bold;
height:25pt;
background-color:rgb(192,154,0);
border-radius:25px; 
cursor:pointer;
width:120px;
}
</style>
</head>
<body>
<div id="bovenstrook">
			<img src="https://www.mijndvcheilighart.be/images/banner.jpg">
		</div>
		<div id="container">
			<div id="linkerkolom">
				<nav>
					<ul>
					<?php
					$spagina="contact.php";
					menu($db,$spagina);
					?>
					</ul>
				</nav>
			</div>
			<div id="centrum">
				<section id="onderwerp">
					<div class="onderwerp">
					<div>
					<i class="far fa-envelope fa-2x onderwerpIcoon"></i>
					</div>
					<div>
					<h2 class="h2oranje">Contact</h2>
					</div>
					</div>
				</section>
				<section id="contactblokken">
					<div>
						<h2 class="h2paars">DVC Heilig Hart VZW </h2>
						<ul>
							<li class="naastelkaar">
								<div><i class="fas fa-map-marker-alt"></i></div>
								<div style="margin-left:5px;"><a class="standaard" style="text-decoration:none;" href="https://www.google.co.in/maps/place/Leernsesteenweg+53,+9800+Deinze/@50.9980345,3.5473689,17z/data=!3m1!4b1!4m5!3m4!1s0x47c36c89ac882f15:0x1aa071daa376fa67!8m2!3d50.9980345!4d3.5495576" target="_blank" title="Route naar DVC Heilig Hart">Leernsesteenweg 53, 9800 Deinze, België</a></div>
							</li>
							<li class="naastelkaar">
								<div><i class="far fa-envelope"></i></div>
								<div style="margin-left:5px;"><a class="standaard" style="text-decoration:none;" href="mailto:[email protected]" title="Mail kwalitietscoördinator">[email protected]</a></div>
							</li>
							<li class="naastelkaar">
								<div><i class="fas fa-phone"></i></div>
								<div style="margin-left:5px;"><span class="standaard">09 387 77 11</span></div>
							</li>
							<li class="naastelkaar">
								<div><i class="fas fa-fax"></i></div>
								<div style="margin-left:5px;"><span class="standaard">09 387 77 00</span></div>
							</li>
						</ul>
					</div>
					<div>
					<h2 class="h2paars">Stel hier jouw vraag</h2>
						<form id="frmcontact" name="frmcontact" method="post" action="contact.php">
							<ol>
								<li><label for="naam">Naam</label>
									<input type="text" name="naam" id="naam" autocomplete="on">
								</li>
								<li><label for="voornaam">Voornaam</label>
									<input type="text"  name="voornaam" id="voornaam" autocomplete="on">
								</li>
								<li><label for="email">E-mail</label>
									<input type="email"  name="email" id="email" autocomplete="on">
								</li>
								<li><label for="bericht">Bericht</label>
									<textarea rows="15" cols="60"  name="bericht" id="bericht"></textarea>
								</li>
								<li>
									<input type="submit" value="Verzenden" id="frmcontact" name="frmcontact" class="button"> &nbsp;
									<input type="reset" value="Annuleren" id="reset" name="reset" class="button">
								</li>
							</ol>
						</form>
						<script>
						// na submit form
							$('#frmcontact').submit(function() {
							// tegenhouden verzenden
								event.preventDefault();
							var naam = $('#naam').val();
							var voornaam = $('#voornaam').val();
							var email = $('#email').val();
							var bericht = $('#bericht').val();
							// aanspreken recaptacha
							grecaptcha.ready(function() {
							//recaptcha token
							grecaptcha.execute('mijn token', {action: 'contact'}).then(function(token) {
							// plaats token in form
							$('#frmcontact').prepend('<input type="hidden" name="g-recaptcha-response" value="' + token + '">');
							alert(token);
							$.post("contact.php",{naam: naam, voornaam: voornaam, email: email, bericht: bericht, token: token}, function(result) {
                            console.log(result);
                            if(result.success) {
                                    alert('Thanks for posting comment.')
                            } else {
                                    alert('You are spammer ! Get the @$%K out.')
                            }
                    });
            });;
        });
  });
  </script>
					</div>
				</section>
			</div>
</div>
</body>
</html>

Dit is het stuk jquery en input wordt verzonden naar php hieronder

<?php
$naam, $voornaam, $email, $bericht;$captcha;
  $naam = filter_input(INPUT_POST,'naam',FILTER_SANITIZE_STRING);
  $voornaam = filter_input(INPUT_POST,'voornaam',FILTER_SANITIZE_STRING);
  $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
  $bericht = filter_input(INPUT_POST, 'bericht', FILTER_SANITIZE_STRING);
  $captcha = filter_input(INPUT_POST, 'token', FILTER_SANITIZE_STRING);
  if(!$captcha){
    echo '<h2>Please check the the captcha form.</h2>';
    exit;
  }
  $secretKey = "mijn sleutel";
  $ip = $_SERVER['REMOTE_ADDR'];
  
  // post request to server
  $url = 'https://www.google.com/recaptcha/api/siteverify';
  $data = array('secret' => $secretKey, 'response' => $captcha);

  $options = array(
    'http' => array(
      'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
      'method'  => 'POST',
      'content' => http_build_query($data)
    )
  );
  $context  = stream_context_create($options);
  $response = file_get_contents($url, false, $context);
  $responseKeys = json_decode($response,true);
  header('Content-type: application/json');
  if($responseKeys["success"]) {
    echo json_encode(array('success' => 'true'));
  } else {
    echo json_encode(array('success' => 'false'));
  }
?>

Alles lijkt in orde maar ik krijg geen enkel from verzonden. Telkens zeft hij dat ik spam ben. Kan iemand helpen?
En wat meldt de console?

Daar zie ik dat mijn recaptcha 10 maal is aangeroepen. Kan ik ook meer in details ziien wat fout is?
Hierbij printscreen van controlepaneel:
De console (van je browser) moet aangeven wat de AJAX-request is die ontvangen wordt.
Daar zijn we wel benieuwd naar. Het controlepaneel is niet echt spannend.
Ben benieuwd wat er op Live Sex Web Cam (2e browser tab) te zien is.
Altijd oppassen met publiceren van schermafdrukken.
Bedankt voor de tips :-)
Volgens mij bedoel je dit:

<br />
<b>Parse error</b>:  syntax error, unexpected ',' in <b>/data/sites/web/dvcheilighartbe/www/web2019/edvc/contact/contact.php</b> on line <b>2</b><br />


[size=xsmall]Toevoeging op 16/12/2019 23:15:59:[/size]

Ik heb het probleem opgelost.
Dankzij de tip van de console. Bedankt voor deze tip, heb niet veel ervaring met ajax request.
Nu kan ik terug verder!
Hallo,
de recaptcha werkt nu wel perfect maar hoe kan ik nu de inhoud van de form verder gebruiken?
Als ik aan mijn php stukje een dataconnectie en dergelijke krijg ik de request niet terug en weet ik dus ook niet of het geen spam is.
Probeerde ook al om dit in mijn index.php nogmaals te posten naar een submit pagina maar dat wil hij ook niet .
Kan er mij iemand op weg helpen?
Dus waar in dit geheel komt nu de eigenijke form afhandeling?
Wat is je relevante code nu?
De relevante code is te zien in de originele post.
Maar nu vraag ik me dus af hoe ik de inhoud van het form kan verwerken.
Moçet ik daarvoor dat form nogmaals posten naar een derde script, vb insert.php
Of kan ik dat doen in het stuk contact.php na de controle en voor de echo ter hoogte van regel 31ongeveer.
Probeerde al op het einde maar dan werkt mijn alert uit index.php niet meer.
De controle op je recaptcha valt onder jouw formulier validaties. Met jouw API key wordt er een request naar Google gestuurd, en die stuurt aan de hand van de gestuurde gegevens terug met het besluit of de bezoeker goedgekeurd is of niet. Dit controleer je dan in jouw code.

Als hier overal positief aan wordt voldaan, dan verwerk je de gegevens in de database.

Reageren