recaptcha controle doet het niet

Status
Niet open voor verdere reacties.

Bossewolf

Gebruiker
Lid geworden
27 mrt 2011
Berichten
8
Hallo,

Ik heb een formulier wat uitstekend werkt, maar nu wil ik recaptcha toevoegen en het lukt me niet. Ik heb allerlei forums afgezocht en geprobeerd, maar ik doe iets fout. Kan iemand mijn code bekijken en kijken of die me kan helpen. Ik weet dat er bij succes nog een stukje code moet, maar wat precies kan ik niet ontdekken. Alvast heel erg bedankt voor de genomen moeite.

Code:
<!DOCTYPE html>
<html lang="nl">
<head>
 </script>

<script src="https://www.google.com/recaptcha/api.js" async defer></script>
 
</head>
<body>
<!-- contact -->   
<section id="contact">
 <div class="inner">   
<div class="container">
    <h2>Contact</h2>
    <div class="row">
        <div class="col-md-6">
        <form class="contact-form" method="post" action="contact-form-handler.php">
        <div class="form-group">
        <input name="name" type="text" class="form-control" placeholder="Naam" required>    
        </div> 
         <div class="form-group">
        <input name="phone" type="tel"  class="form-control"  placeholder="Telefoon nummer" >    
        </div> 
         <div class="form-group">
        <input name="email" type="email" class="form-control" placeholder="E-mail adres" >    
        </div> 
         <div class="form-group">
         <textarea name="message" placeholder="Bericht" class="form-control" rows="4" required></textarea>
                
        </div> 

<div class="g-recaptcha" data-sitekey="6LcGhqwZAAAAAKX0_zyMigV-0YBA2ZHXCPr9eBQW"></div>
   
         <button type="submit" class="btn btn-primary">Versturen
            </button>   
        </form>    
        </div>

PHP:
<?php

  $name = $_POST['name'];
  $phone = $_POST['phone'];
  $email = $_POST['email'];
  $message = $_POST['message'];

$email_from = 'hier staat mijn email@.......';

$email_subject = "Formulier van de website";

$email_body ="Naam: $name.\n".
             "Email: $email.\n".
             "Telefoon nummer: $phone.\n".
             "Bericht: $message.\n";

$to = "info@kats.nl";
$headers = "From: $email_from \r\n";
$headers .="Reply-To: $email \r\n";
 mail($to,$email_subject,$email_body,$headers);
  header("Location: index.html");


if(isset($_POST["submit"])){
 
        $captcha=$_POST["g-recaptcha-response"];
        $secretkey="6LcGhqwZAAAAANBDrv5tQ9tzUlNFQ6QK0WvF1S-Q";
        $url="https://www.google.com/recaptcha/api/siteverify?secret=".urlencode($secretkey)."&response=".urlencode($captcha)." ";
        $response=file_get_contents($url);
        $responsekey=  json_decode($response,TRUE);
        if($responsekey["success"]){
           


        }
        else
        {
            echo "stop";
        }
    }
 
Dus je stuurt iemand door naar een andere URL (waarom is dat nodig?), en dan hoop je nog dat de controle plaatsvindt?
Dat is niet echt een juiste logica. ;)

ik zou als ik jouw was die mail wegsturen als de recaptcha-controle klopt.
 
Laatst bewerkt:
oke

Nu komt dus het probleem, heb je een idee welk stuk van de code ik moet verplaatsen om het goed te krijgen. Sorry ik ben een beginneling en loop helemaal vast.
 
De mail-functie en de location header.
Dat zijn de dingen die moeten gebeuren als de captcha klopt.

Op lijn 31 gebeurt nu echt niks, los van het feit dat die nooit in beeld zal komen omdat je de gebruiker daarvoor al doorstuurt.
 
Laatst bewerkt:
????

ik heb geprobeerd om lijn 17 t/m 21 na regel 32 te zetten, geen resultaat.
Ik heb daarna geprobeerd om regel 20 en 21 na regel 32 te zetten, ook geen resultaat.
Doe ik nu iets heel stoms?:rolleyes:
 
Wat gebeurt er dan precies?

Misschien is het handig om even orde op zaken te stellen door wat foutafhandeling aan te zetten, en commentaar toe te voegen.
Vergeet je $secretkey niet in te vullen.

Ook ben ik benieuwd welke debug tekst te krijgt.

PHP:
<?php
// foutmeldingen aan- uitzetten
// Bij testen: zet neer resp. 1,1, en E_ALL. In productie: 0,0 en 0
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

 // instellingen
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['message'];
$email_from = 'hier staat mijn email@.......';
$email_subject = "Formulier van de website";
$email_body ="Naam: $name.\n".
             "Email: $email.\n".
             "Telefoon nummer: $phone.\n".
             "Bericht: $message.\n";
$to = "info@mailadres.nl";
$secretkey="*********"; // Re-Captcha secretkey.
 
// Hier gaan we controleren of het formulier via POST verstuurd is.
if($_SERVER['REQUEST_METHOD']=="POST"){
        $captcha=$_POST["g-recaptcha-response"];
        $url="https://www.google.com/recaptcha/api/siteverify?secret=".urlencode($secretkey)."&response=".urlencode($captcha)." ";
        $response=file_get_contents($url);
        $responsekey=  json_decode($response,TRUE);
        echo "Debug:";
        var_dump($responsekey); // stukje debugging, welke waarde staat hier?
        if($responsekey["success"]){
           // Hier komen de mailheaders.
           $headers = "From: $email_from \r\n";
           $headers .="Reply-To: $email \r\n";
           
           //We gaan proberen de mail te versturen
           if(mail($to,$email_subject,$email_body,$headers)) {
                header("Location: index.html");
                exit(); // script is vanaf nu klaar, de gebruiker is doorgestuurd.
           } else {
                echo "Er is een technisch probleem op de site, mail is niet verzonden. Stuur de mail handmatig naar: ".$email_from;
           }
        } else {
            echo "De captcha-challenge is fout. Probeer opnieuw.";
        }
}
?>
 
Laatst bewerkt:
Bedankt

Bedankt voor je tijd en energie die je in mijn vraag hebt gestoken, het werkt perfect.
 
Fijn dat het werkt :)
 
Met captcha van derde partijen geef je duidelijk aan dat je website met haken en ogen aan elkaar zit.
Je plaatst een deel van de gemeenschap die dit niet kunnen lezen zoals blinden ect. buiten bereik van je diensten.
Als de derde partij zoals google uit dienst gaat ... zal je website ophouden te werken en dan zullen mensen je trachten te kontakteren nu dan wordt het moeilijk doordat dit niet mogelijk is.Maar maak je geen zorgen zelf zal je het nooit merken tenzij je professioneel bent en er een telefoon,postadres nr erbij plaatst .
Door het gebruik van captcha laat je weten aan kwaadwilligen weten : hier kan je gemakkelijk gegeven bemachtigen.
Het zegt dat je login niet goed in elkaar zal steken of dat je bvb wp gebruikt waar de beveiliging iets lijkt op opendeurdagen.
 
Met captcha van derde partijen geef je duidelijk aan dat je website met haken en ogen aan elkaar zit.
Je plaatst een deel van de gemeenschap die dit niet kunnen lezen zoals blinden ect. buiten bereik van je diensten.
Als de derde partij zoals google uit dienst gaat ... zal je website ophouden te werken en dan zullen mensen je trachten te kontakteren nu dan wordt het moeilijk doordat dit niet mogelijk is.Maar maak je geen zorgen zelf zal je het nooit merken tenzij je professioneel bent en er een telefoon,postadres nr erbij plaatst .
Door het gebruik van captcha laat je weten aan kwaadwilligen weten : hier kan je gemakkelijk gegeven bemachtigen.
Het zegt dat je login niet goed in elkaar zal steken of dat je bvb wp gebruikt waar de beveiliging iets lijkt op opendeurdagen.

Mag ik zeggen dat je een hoop onzin verkondigt?
 
citaat @?% was je vergeten dat het erboven stond?[je komt hier genoeg om te weten dat ...]
Ik weet ook dat wp het enigste is dat jij kent php4u maar dat wil niet zeggen dat het ooit veilig is geweest.

Captcha is gewoon niet professioneel neem dit gewoon aan het is gewoon hinderlijk (beveiligen doe je waar niemand het ziet op de achtergrond)


Als je deze bekijkt spreken er mensen nog verder (stellen ze in vraag om nog php te gebruiken voor eenvoudige website zie commentaren)
https://www.security.nl/posting/561215/Honderden+Drupal-sites+gehackt+en+gebruikt+voor+cryptomining

Dus als de doorsnede php developer niet eens wat veiliger gaat programmeren bederft dat de hele sector.

ps je[php4u] staat all enkele jaren in mijn negeerlijstje en je blijft er voorlopig nog in
 
Laatst bewerkt:
Dat het niet-professioneel is, dat mag je gerust als mening zeggen, maar ik denk daar anders over.
Ik zie het ook op veel professionele sites verschijnen. Je kan natuurlijk wel drempels aanleggen om ReCaptcha's te tonen. Zoals bij bezoek uit andere minder betrouwbare landen.
Maar een ReCaptcha in het algemeen is ook niet verkeerd hoor.

Verder ben ik niet diegene die echt veel over WordPress weet, ik vermoed dat je mij met iemand anders verward. En waarom je sprong opeens naar cryptomining en de veiligheid van CMS'en gaat, is mij een raadsel. Je mag mij wel op het negeer-lijstje hebben staan (leuk dat je nu reageert ;) ), maar als ik eerlijk mag zijn ben jij toch echt diegene die vaak off-topic gaat waarop ik je probeer te verbeteren, wat regelmatig op kritiek uitmondt. Zie het als een leerpuntje en zeker niet als een persoonlijke aanval.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan