Recaptcha formulier probleem

Status
Niet open voor verdere reacties.
Een goede onzichtbare aanvulling op een reCaptcha is controle op geo locatie.
Dit is de ip2geo functie (hierin niets wijzigen)
PHP:
// iplocate.io voor omzetting van ip naar geo locatie.
// gratis te gebruiken tot max 1000 aanvragen per dag.
function ip2geo ($ip = "", $select = "") {
    if (!filter_var($ip, FILTER_VALIDATE_IP)) return null;
    $url = "https://www.iplocate.io/api/lookup/".$ip."/json?apikey=&callback=";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    $response = curl_exec($ch);
    curl_close($ch);
    if ($response === false) return null;
    $data = json_decode($response);
    if (is_null($data)) return null;
    $arr = (array) $data;
    $prop = strtolower(trim(strval($select)));
    if (empty($arr)) return null;
    if (array_key_exists('error', $arr)) return null;
    if ($prop == "") return $arr;
    if (!array_key_exists($prop, $arr)) return null;
    if (strlen(strval($arr[$prop])) == 0) return "??";
    return $arr[$prop];
}

Zo gebruik je de function ip2geo voor een controle op geo locatie.
PHP:
// De 2-letterige landcodes die zijn toegestaan, bijv. "NL,BE,LU,DE"
// Je vindt landcodes op https://nl.wikipedia.org/wiki/ISO_3166-1
$allow = "NL,BE,LU";

$ip = $_SERVER['REMOTE_ADDR'];
$cc = ip2geo ($ip, 'country_code');
$ok = (stripos($allow, $cc) !== false || $cc === "??");
if ($ok == false) {
    echo "Mail niet versturen";
} else {
    echo "Mail versturen is ok";
    // hier je mail script invoegen
}

Als je wilt dat er geen mail wordt verstuurd als er geen landcode bekend is haal dan het volgende weg in regel 7
|| $cc === "??"
 
Laatst bewerkt:
@marconist, ben je nog wat verder gekomen?
Ik heb eerder in dit topic al een mooie opzet gemaakt die eenvoudig uit te bouwen is.
 
Re: captcha probleem

Beste Aar en Bron
bedankt voor jullie laatste respons.

Ja, ik ben zojuist verder gekomen en heb de Email pagina toegevoegd aan mij web site.
Ik vond op het URL https://codeforgeek.com/google-recaptcha-v3-tutorial/ de installatie.

Behoudens een klein foutje in hun form.php (de tag<?php vergeten) kun je met tutorial
een eenvoudig formulier en validatie installeren.

Sorry dat ik jouw voorbeeldje niet gebruikt heb, maar voor mij was dit de eenvoudigste manier.
Ik heb niet de intensie gehad om mij PHP eigen te maken, primair wilde ik een eenvoudige website
bouwen. Natuurlijk ontkom je er niet aan om je enige basis kennis eigen te maken.
Veel heb ik wel geleerd over Bootstrap, HTML, CSS en PHP, maar dan in relatie met HTML, daarvoor dank.
NB. Iets over mijn leeftijd, maar nog altijd leergierig, 80 plusser, niet verdere rond bazuinen :D
 
Wat is er mis met een goed gestructureerd formulier, terwijl jij nu enkel een deel van een motor in probeert te bouwen?
Die link naar die tutorial op 'CodeForGeek' is geen tutorial om een formulier te bouwen, maar een tutorial om ReCaptcha in een bestaand formulier in te bouwen.

In this tutorial, I am going to show you how to integrate Google reCAPTCHA v3 on your website.
Er staat niet: In this tutorial I will show you how to integrate a form with Google reCAPTCHA v3 on your website.
Het legt niks uit over:

- Validatie
- Het verzenden van een formulier
- Veiligheid

De inbouw van de ReCaptcha aan de hand van dit formulier kan je natuurlijk wel prima toepassen op mijn voorbeeld.
Ik zou zeggen: Kijk nog eens naar mijn voorbeeld, en probeer dit eens uit te werken. Daar leer je ook van, want ik heb ook niet voor niets duidelijke commentaren geplaatst. :)
 
Laatst bewerkt:
Doe weer een voorzichtige poging jou te volgen.
Het eerste wat ik heb gedaan is, de genoemd tutorial te volgen en vooral te begrijpen.
Duidelijk voor mij is wel wat het script subscribe_newsletter_form.php-bestand doet.
Ik heb dat in jouw script gebouwd op de plaats waar jij dat aangaf, is dat goed gedaan.?

Code:
<!DOCTYPE html>
<html lang="nl">
<head>
<title>Subscribe to Newsletter</title>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://www.google.com/recaptcha/api.js?render=6LdLk7EUMIJN SLEUTEL--RRTLPHEGe9Y"></script>
</head>
<body>

<div>
<b>Subscribe Newsletter</b>
</div>

<form id="newsletterForm" action="subscribe_newsletter_submit.php" method="post">
    <div>
        <div>
            <input type="email" id="email" name="email">
        </div>
        <div>
            <input type="submit" value="submit">
        </div>
    </div>
</form>

<script>
$('#newsletterForm').submit(function(event) {
    event.preventDefault();
    var email = $('#email').val();
    grecaptcha.ready(function() {
        grecaptcha.execute('6LdLkMijn site sleutelmlxQ2-RRTLPHEGe9Y', {action: 'subscribe_newsletter'}).then(function(token) {
            $('#newsletterForm').prepend('<input type="hidden" name="token" value="' + token + '">');
            $('#newsletterForm').prepend('<input type="hidden" name="action" value="subscribe_newsletter">');
            $('#newsletterForm').unbind('submit').submit();
        });;
    });
});
</script>

</body>
</html>

Misschien kun je hier al iets mee, maar leer mij eerst hoe ik een fatsoenlijk stukje code
met regelnrs naar je toe kan sturen. Jullie doen dat echt duidelijk.


mod. De html in
Code:
[/noparse] tags gezet met "code drukknopje" (en <?php .... ?> weggehaald)[/COLOR][/I]
 
Laatst bewerkt door een moderator:
Vanwaar die <?php tag boven je HTML-formulier en onderaan?
Je doet hier niks met PHP?

Je hebt nu gewoon een HTML-document met een form die naar subscribe_newsletter_submit.php verwijst.
In mijn voorbeeld staat het formulier gewoon in het PHP-bestand zelf. Op lijn 41 van mijn voorbeeld staat de plek al aangewezen.


En mooie code-blokken krijg je door boven het 'Snel reageren' op de kop PHP te drukken. Vijfde van rechts in de opmaak werkbalk.
 
Laatst bewerkt:
reCaptcha v3

Heb een ander script overgenomen en een stukje php script toegevoegd zodat ik de mail op mijn mailadres binnen krijg. Is getest op veiligheid, validatie en werkt perfect.
Wat mij betreft kan deze post als opgelost beschouwd worden.
Bedankt voor alle hulp.
 
Zou je willen delen welk script dat is? Ik ben wel benieuwd.

Alleen best jammer dat mijn voorbeeld genegeerd wordt, waar ik dus weer een hoop moeite heb ingestoken. Zonde, zonde, zonde......:confused: :(
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan