Recaptcha V3 opeens niet meer werkende

Status
Niet open voor verdere reacties.

DavidVL

Gebruiker
Lid geworden
29 nov 2020
Berichten
7
Hallo iedereen,

Sinds een paar weken werkt mijn recaptcha V3 niet meer op de website.
Recaptcha heeft als domein thuiskapstergreet.be

Code heb ik in een txt bestand op de website gezet.

HTML Formulier code: zie onderaan
PHP code: zie onderaan

Ik krijg dus sinds een tijd de error Please check the captcha form

Ben hier nu al een hele tijd mee bezig en kan het niet vinden, hopelijk is hier iemand die mij verder kan helpen.

Alvast bedankt,

Greet
 
Laatst bewerkt:
Wat zit er in $responseKeys als je met de print_r( ) functie kijkt?
 
Eerlijk gezegd zou ik niet weten hoe ik dit kan controleren.
Het is nu ook niet dat ik de grootste website maker ben. Dit is een hobby dat ik doe voor mijn vrouw, kreeg de melding van de webhost een paar maanden geleden dat ik een recaptcha moest implementeren, dit heeft dan 3 dagen gewerkt tot ik ergens een code heb aangepast en kan het nu niet meer vinden.

Krijg ook op het html formulier FOUT voor site-eigenaar: ongeldig sleuteltype.
 
Ok

Heel dom van mij en bedankt @PHP4U om de regel aan te duiden.

Dit stond in de code:
Code:
 if(intval($responseKeys["success"]) !== 1) {
    echo '<p class="alert alert-warning">Please check the captcha form.</p>';
} else {
    Mail bla bla bla

Uiteraard krijg ik de echo Please check the captcha form.

Opgelost door regel weg te halen van de testen.
 
Laatst bewerkt door een moderator:
Of het verwijderen van deze controle een goede oplossing is, betwijfel ik sterk.
Als $responseKeys["success"] géén 1 is, dan moet je hier toch actie op ondernemen. Ook jammer dat je je code hebt verwijderd.
Kan je die hier plaatsen?
 
hey PHP4U,

Code staat er terug.
Zonder die check werkt het wel. Heb wel een fout gemaakt en is blijkbaar recaptcha v2.
 
Deel de code liever hier, dan kunnen anderen er wat mee.
 
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

	<head>
		<title>Thuiskapster Greet Contact</title>
		<meta name="keywords" content="Kapster, Thuiskapster, Kapper aan huis, Zemst, Hofstade, Weerde, Eppegem, Mechelen, Kontich, Edegem, Knippen, Kapster aan huis, Communie, Kapper, Bruchen">
		<meta name="description" content="Kapster, Thuiskapster, Kapper aan huis, Zemst, Hofstade, Weerde, Eppegem, Mechelen, Kontich, Edegem, Knippen, Kapster aan huis, Communie, Kapper, Bruchen">
		<meta name="revisit-after" content="7 Days">
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
		<script src='https://www.google.com/recaptcha/api.js'></script>
		
		
		<link rel="stylesheet" href="assets/css/main.css" />
		
	</head>
													
	<body class="is-preload">

		<!-- Wrapper -->
			<div id="wrapper">

				<!-- Main -->
					<div id="main">
						<div class="inner">

							<!-- Header -->
								<header id="header">
									<a href="index.html" class="logo"><strong></strong></a>
									
								</header>

							<!-- Banner -->
								<section id="banner">
									<div class="content">
										<header>
											<h1>Thuiskapster Greet</h1>
											<p></p>
										</header>
									  			<p>Liefst van al kan u mij telefonisch bereiken; onderaan kan u ook altijd een email versturen maar dit vermakkelijkt de afspraak niet.<br>
												U kan mij altijd bereiken op het nummer.</p>
												<br />
        
											    <!-- ajax contact form -->
    <section style="margin-top: 50px;">
        <div class="container">
            <div class="row justify-content-center">
                <div class="col-md-8">
                    <div class="card">
                        <h5 class="card-header">Contact formulier</h5>
                        <div class="card-body">
                            <form class="contact__form" method="post" action="mail.php">
                                
                                <!-- form message -->
                                <div class="row">
                                    <div class="col-12">
                                        <div class="contact__msg" style="display: none">
                                            <p>Uw bericht werd met succes verzonden.</p>
                                        </div>
                                    </div>
                                </div>
                                <!-- end message -->

                                <!-- form element -->
                                <div class="row">
                                    <div class="col-md-6 form-group">
                                        <input name="name" type="text" class="form-control" placeholder="Naam" required>
                                    </div>
                                    <div class="col-md-6 form-group">
                                        <input name="email" type="email" class="form-control" placeholder="Email adres" required>
                                    </div>
                                    <div class="col-md-6 form-group">
                                        <input name="phone" type="text" class="form-control" placeholder="Telefoon nummer" required>
                                    </div>
                                    <div class="col-md-6 form-group">
                                        <input name="subject" type="text" class="form-control" placeholder="Titel" required>
                                    </div>
                                    <div class="col-12 form-group">
                                        <textarea name="message" class="form-control" rows="3" placeholder="Bericht" required></textarea>
                                    </div>
                                    <div class="col-12 form-group">
                                        <div class="g-recaptcha" data-sitekey="6LcSoPIZAAAAAItyksdG9O82Vh-ggIAZqd7chyrJ"></div>
                                    </div>
                                    <div class="col-12">
                                        <input name="submit" type="submit" class="btn btn-success" value="Verzend bericht">
                                    </div>
                                </div>
                                <!-- end form element -->
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
												
        
									</div>
									
								</section>
						</div>
					</div>

				<!-- Sidebar -->
					<div id="sidebar">
						<div class="inner">

							<!-- Menu -->
								<nav id="menu">
									<header class="major">
										<h2>Menu</h2>
									</header>
									<ul>
										<li><a href="index.html">Home</a></li>
										<li><a href="About.html">Wie ben ik</a></li>
										<li><a href="Prijslijst.html">Prijslijst</a></li>
										<li><a href="Naarmij.html">Contact</a></li>
									</ul>
								</nav>

							<!-- Footer -->
								<footer id="footer">
									<p class="copyright">&copy; 2018 Hair @ Home - Greet Van de Peer.</p>
								</footer>

						</div>
					</div>

			</div>

		<!-- Scripts -->
			<script src="assets/js/jquery.min.js"></script>
			<script src="assets/js/browser.min.js"></script>
			<script src="assets/js/breakpoints.min.js"></script>
			<script src="assets/js/util.js"></script>
			<script src="assets/js/main.js"></script>

	</body>
</html>
 
PHP:
<?php

    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        // access
        $secretKey = '6LcSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdY4B';
        $captcha = $_POST['g-recaptcha-response'];

        if(!$captcha){
          echo '<p class="alert alert-warning">Please check the the captcha form.</p>';
          exit;
        }

        # FIX: Replace this email with recipient email
        $mail_to = "rxxxxd@hotmail.com";
        
        # Sender Data
        $subject = trim($_POST["subject"]);
        $name = str_replace(array("\r","\n"),array(" "," ") , strip_tags(trim($_POST["name"])));
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $phone = trim($_POST["phone"]);
        $message = trim($_POST["message"]);
        
        if ( empty($name) OR !filter_var($email, FILTER_VALIDATE_EMAIL) OR empty($phone) OR empty($subject) OR empty($message)) {
            # Set a 400 (bad request) response code and exit.
            http_response_code(400);
            echo '<p class="alert alert-warning">Gelieve juiste gegevens in te geven.</p>';
            exit;
        }

        $ip = $_SERVER['REMOTE_ADDR'];
        $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
        $responseKeys = json_decode($response,true);
        
        if(intval($responseKeys["success"]) !== 1) {
               
            # Mail Content
            $content = "Name: $name\n";
            $content .= "Email: $email\n\n";
            $content .= "Phone: $phone\n";
            $content .= "Message:\n$message\n";

            # email headers.
            $headers = "From: $name <$email>";

            # Send the email.
            $success = mail($mail_to, $subject, $content, $headers);
            if ($success) {
                # Set a 200 (okay) response code.
                http_response_code(200);
                /* Redirect visitor to the thank you page */
                header('Location: thanks.html');
                exit();
            } else {
                # Set a 500 (internal server error) response code.
                http_response_code(500);
                echo '<p class="alert alert-warning">Oops! Je hebt niet alles juist gedaan.</p>';
            }
        }

    } else {
        # Not a POST request, set a 403 (forbidden) response code.
        http_response_code(403);
        echo '<p class="alert alert-warning">Probeer het nogmaals er ging iets fout.</p>';
    }

?>

mod: secretKey en emailadres veranderd.
 
Laatst bewerkt door een moderator:
Kijk, van zulke elke if-statements ben ik geen voorstander.
Elke if-statement zou minimaal een else moeten hebben. Je wilt immers door defensief te programmeren altijd een beslissing kunnen nemen of een fout te tonen.
Je wilt immers niets uitsluiten wat lijdt tot onduidelijkheid bij je gebruikers.
 
reCaptcha is niet zinvol in dit script. Met dit
Code:
if (intval($responseKeys["success"]) !== 1)
wordt alleen gekeken of Google wel of niet antwoord geeft.

Om te weten of de formulier invuller misschien een bot is moet er ook naar de score worden gekeken.
Code:
if ($responseKeys["score"] < 0.4)
    // lijkt op een bot
else
    // lijkt in orde, hier  mailen

Lees meer over het resultaat op https://developers.google.com/recaptcha/docs/v3
Google: "Score 1.0 is very likely a good interaction, 0.0 is very likely a bot."
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan