minimale tijd instellen om een mailformulier in te vullen
Ik lees nu op internet dat je ipv recaptcha misschien beter een minimale invultijd in kan stellen.
Mensen hebben vaak wat langer nodig om een emailformulier in te vullen dan een bot.
Weet iemand misschien hoe ik dit in kan stellen?
Dit is overigens mijn php formulier welke ik gebruik om het emailformulier te laten verzenden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}
$naam = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$message.'
------------------------------------';
mail('[email protected]', 'Bericht van website', $message, 'From: '.$email);
header('location:http://www.dongenculinair.com/bedankt.html');
?>
if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}
$naam = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$message.'
------------------------------------';
mail('[email protected]', 'Bericht van website', $message, 'From: '.$email);
header('location:http://www.dongenculinair.com/bedankt.html');
?>
Edit:
Verder zou ik op de website geen afbeeldingen gebruiken van 1.2 MB, dit kost allemaal laadtijd en bandbreedte.
Gewijzigd op 03/05/2017 16:02:59 door Marthijn Buijs
op de goede manier gebruikt?
Gebruik je uberhaupt Recaptcha of een ander middel om spam buiten te houden, zoals bijvoorbeeld een random token?
@Rob, je hebt het over ReCaptcha, maar ik zie in bovenstaande formuliervalidatie geen controle hierop? Weet je zeker dat je de ReCaptcha wel Gebruik je uberhaupt Recaptcha of een ander middel om spam buiten te houden, zoals bijvoorbeeld een random token?
Maarten. Wat jij zegt lijkt me een goed idee.
Maar ik heb geen idee hoe ik dat zou moeten doen.
Moet ik iets toevoegen aan het bestaand php formulier?
Moet ik iets toevoegen in mijn html pagina waar het formulier staat?
En wat als iemand vaker dit formulier invult (mits van toepassing). Browsers hebben zoiets als "autocomplete" - dit stelt iemand in staat om redelijk rap een formulier in te vullen. Afhankelijk van het type formulier en het gebruik is 10 seconden mogelijk niet altijd toereikend dus deze oplossing zal niet in alle gevallen bruikbaar zijn.
Ik denk, persoonlijk, dat je al een heel eind komt met een controle die nagaat of het formulier wordt verstuurd vanaf jouw site middels het eerder genoemde random token. En als er wat geavanceerdere bots op je site actief zijn kun je nadenken over additionele maatregelen zoals een "honeypot", een verborgen element waar een normale gebruiker niets mee doet maar een bot grif iets in zal vullen.
Ook zou je de spam zelf kunnen analyseren en bij kunnen houden waar de form-submits vandaan komen. Mogelijk beperken deze zich tot één of enkele IP's. Deze zou je dan op een blacklist kunnen gooien.
Of je implementeert bestaande oplossingen, zoals een (Re)Captcha...
Ik heb op 2 websites de recaptcha staan:
Bij beide pagina's kan ik gewoon de mail verzenden zonder eerst de recaptcha op te hoeven lossen.
Op deze pagina van google : https://www.google.com/recaptcha/admin#site/337619931 staat:
"Step2 server side integration"
Ik heb geen flauw benul wat ik hier moet doen.
Ben bij elkaar al anderhalve dag bezig met recaptcha of eventuele andere oplossingen zonder enig resultaat. Wordt er langzaamaan gek van. Het zou niet zo heel moeilijk moeten zijn.
Via het mailformulier van heb ik sinds gisteren meer dan 50 mailtjes ontvangen zonder inhoud.
Allemaal andere afzenders, maar hoofdzakelijk gmail.
De namen vd afzenders is telkens iets in de geest van 5909e24365fb of
De namen beginnen allemaal met 5908 of 5909, wat hierachter staat varieert steeds
Gewijzigd op 03/05/2017 17:18:00 door Rob Arnoe
begin. Heb je een API-key aangemaakt voor dat domein? Dat stelt je in staat om de ReCaptcha op een specifieke website te gebruiken.
Begin bij het ik heb dit geplaatst net voor de "head tag"
<script src='https://www.google.com/recaptcha/api.js'></script>
en ik heb dit geplaatst op de plaats waar de recaptcha moet komen te staan
<div class="g-recaptcha" data-sitekey="6Lfbqx8UAAAAAM2i4q9qAnJtrUCDe2tyjPR7SYM4"></div>
Dan ben je volgens mij al een heel eind? Het enige wat je dan nog moet doen is "het antwoord controleren" na submitten van een formulier in de validatiestap. Als je altijd door je ReCaptcha heenkomt zonder dat je de doorgaans verplichte stappen hebt doorlopen is er iets mis natuurlijk.
Op de pagina van google staat "Step2 server side integration"
Ik heb geen flauw benul wat ik hier moet doen.
Hier staat uitleg waar ik echt geen bal van snap:
https://developers.google.com/recaptcha/docs/verify
Gewijzigd op 03/05/2017 17:41:21 door Rob Arnoe
Iemand submit een formulier, in de informatie die je ontvangt zit tevens een POST veld genaamd g-recaptcha-response. Deze krijg je terug van de ReCaptcha functionaliteit. Vervolgens vraag je opnieuw aan ReCaptcha (met behulp van g-recaptcha-response) via bijvoorbeeld een cURL POST of de submit geldig was. Je krijgt dan wat JSON data terug, waaronder het veld "success". Hier kun je uit afleiden of de "ReCaptcha challenge" is volbracht.
Kort door de bocht schakel je dus een externe partij in (ReCaptcha) die beoordeelt of een formulier-submit door een mens is verricht of een robot. Vervolgens vraag je na afloop opnieuw aan deze partij "dit is de informatie die ik terug ontvangen hebt, ziet dit er kosher uit?" waarop de externe partij antwoordt met "ja" of "nee". Indien het antwoord "ja" is kun je met een aan zekerheid grenzende waarschijnlijkheid aannemen dat het een valide submit was waarna je het formulier verder kunt verwerken.
Gewijzigd op 03/05/2017 17:51:00 door Thomas van den Heuvel
moet ik iets toevoegen aan mijn huidige php beatdn die er voor zorgt dat het mailformulier werkt?
moet ik een apart php bestand maken en daarnaar verwijzen?
Dit is mijn huidig php bestand wat er voor zorgt dat de mail verzonden wordt.
Moet ik hier iets aan toevoegen?
Zo ja, wat en waar?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}
$naam = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$message.'
------------------------------------';
mail('[email protected]', 'Bericht van website', $message, 'From: '.$email);
header('location:http://www.dongenculinair.com/bedankt.html');
?>
if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}
$naam = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$message.'
------------------------------------';
mail('[email protected]', 'Bericht van website', $message, 'From: '.$email);
header('location:http://www.dongenculinair.com/bedankt.html');
?>
Na je veldvalidatie bovenaan je script kan je de cURL-controle naar de Google server sturen.
Maar ik ben een ABSOLUTE LEEK op het gebied van php.
Ik ga me daar zsm meer in verdiepen maar daar heb ik nu niets aan.
Op deze pagina van google staat wat uitleg waar ik (zoals eerder gezegd) GEEN BAL VAN SNAP.
https://developers.google.com/recaptcha/docs/verify
Ook deze zin ("Na je veldvalidatie bovenaan je script kan je de cURL-controle naar de Google server sturen.") die ongetwijfeld goed bedoeld is, had wat mij betreft net zo goed in het chinees kunnen zijn.
Waar kan ik de php code vinden die ik moet plaatsen?????
Zelf schrijven is voor mij natuurlijk geen optie.
Kan iemand anders mijn huidige php script aanpassen met de juiste code erin?
Ik begrijp dat ik in feite alles zelf zou moeten doen maar ik heb geen idee waar te beginnen.
Het is geen gemakzucht, ben al anderhalve dag bezig!
Toevoeging op 04/05/2017 09:58:26:
Heb je eigenlijk al een formulier in HTML?
Fijn dat het met die tutorial gelukt is. Ik raad wel aan om geen @'jes te gebruiken in je script, omdat je daarmee daarmee foutmeldingen weg kan moffelen. Gebruik daarom een mooi if-else structuur bij je mail-functie om te kijken of er wel of niet gemaild is vanuit PHP.
Ben blij dat het werkt en durf er niets meer aan te veranderen
Gewijzigd op 04/05/2017 13:22:44 door Rob Arnoe
Dus daarom is het raadzaam om met if-else te controleren of mail() goed werkt:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php // deze regel is alleen vanwege de kleuren in de codeblok!!!
if(mail($to,$subject,$htmlContent,$headers)){
$succMsg = 'Your contact request have submitted successfully.';
} else {
$errMsg = "Technical failure: Mail can't send by us. Please mail the webmaster at: [email protected]!";
}
?>
if(mail($to,$subject,$htmlContent,$headers)){
$succMsg = 'Your contact request have submitted successfully.';
} else {
$errMsg = "Technical failure: Mail can't send by us. Please mail the webmaster at: [email protected]!";
}
?>
Edit: Quote-fix!
Gewijzigd op 04/05/2017 13:40:04 door - Ariën -
ok tx
En ik raad je aan om je toch eens te verdiepen in PHP, dan weet je in ieder geval wat er in je script gebeurt en hoe het werkt.