Beste SD-leden,
Helaas ben ik met één contactformulier op één van de 'laagpitjes'-sites geteisterd door een spambot. Via mijn contactformulier krijg ik zeker dertig mails (als het niet meer zijn) op een dag. Waar kan dit aan liggen?
1. Het formulier, oftewel de code is niet goed opgebouwd?
2. Moet er een captcha-check ingebouwd worden?
3. Waarschijnlijk weten jullie er meer van?!
Ik hoor het graag. Bedankt.
- Hoe verhelp je spam via contactform?
-
15-01-2010, 18:50 #1
- Berichten
- 102
- Lid sinds
- 16 Jaar
Hoe verhelp je spam via contactform?
-
-
15-01-2010, 18:52 #2
- Berichten
- 991
- Lid sinds
- 16 Jaar
Er moet een captcha komen en er moet gekeken worden of alle verplichte velden wel goed zijn ingevuld.
www.recaptcha.net
Misschien heb je daar wat aan?
-
15-01-2010, 18:54 #3
- Berichten
- 102
- Lid sinds
- 16 Jaar
Beste Tom,
Door middel van jQuery en PHP-check kijk ik of alle velden correct zijn ingevuld. Echter, het formulier wat ik bekijk is correct ingevuld met de juiste waarde. Waar kan dit aan liggen?
-
15-01-2010, 18:56 #4
- Berichten
- 991
- Lid sinds
- 16 Jaar
Ik heb geen idee wat jQuery is, maar php weet ik wel, ik zou gewoon een captcha nemen als u last heeft van spam.
-
15-01-2010, 19:43 #5
- Berichten
- 4
- Lid sinds
- 16 Jaar
In dit geval zou er dus een browserside check zijn in JavaScript, en een PHP-check serverside zodat mensen die JS uitschakelen of niet gebruiken die check ook voorgeschotelt krijgen.
-
15-01-2010, 19:45 #6
- Berichten
- 991
- Lid sinds
- 16 Jaar
Oke, ik weet ook niet wat fading is, dus ja, maar goed, ik verpest jouw topic, dus ik reageer maar niet meer tenzij ik iets nuttigs te melden heb.
-
15-01-2010, 19:55 #7
- Berichten
- 257
- Lid sinds
- 15 Jaar
Ik heb wel eens een tip gezien die wellicht goed werkt voor je:
Maak één of twee extra text-velden aan in het formulier. Geef die namen die belangrijk lijken zoals 'email' of 'message'. Zorg er daarna voor met CSS dat die 2 velden onzichtbaar zijn voor echte bezoekers (visibility en display).
Vervolgens check je met je PHP of die 2 velden wel leeg zijn als er gepost wordt. Immers een echte bezoeker ziet de velden niet en kan ze ook niet invullen. Het is echter onwaarschijnlijk dat een botje de CSS controleert en die botjes vullen dan wel wat onzin in. Misschien handig om wanneer de velden wél zijn ingevuld een 403 of 404 error terug te geven?
Het is voor echte bezoekers gebruiksvriendelijker dan een captcha want ze merken er niets van.
Ik raad je ook aan om de namen van de huidige velden aan te passen zodat de botjes waar je nu al last van hebt ook niet meer werken.
-
15-01-2010, 20:32 #8
- Berichten
- 991
- Lid sinds
- 16 Jaar
Dat is wel een goede tip, alleen je hoeft het volgens mij niet perse met css te doen, je hoeft alleen maar type="hidden" neer te zetten volgens mij.
-
15-01-2010, 20:59 #9
- Berichten
- 9
- Lid sinds
- 17 Jaar
Dat lezen botjes dan weer wel...
-
16-01-2010, 08:14 #10
- Berichten
- 257
- Lid sinds
- 15 Jaar
Text-velden daarentegen moeten normaal gesproken wél ingevuld worden. Je kunt verwachten dat botjes wel de html doorlopen maar niet de css die daarbij hoort (nog niet). Ik zou daarvoor ook zeker geen inline css (css binnen de html tags) gebruiken.
-
16-01-2010, 13:32 #11
- Berichten
- 940
- Lid sinds
- 16 Jaar
Ik heb wel eens een tip gezien die wellicht goed werkt voor je:
Maak één of twee extra text-velden aan in het formulier. Geef die namen die belangrijk lijken zoals 'email' of 'message'. Zorg er daarna voor met CSS dat die 2 velden onzichtbaar zijn voor echte bezoekers (visibility en display).
Vervolgens check je met je PHP of die 2 velden wel leeg zijn als er gepost wordt. Immers een echte bezoeker ziet de velden niet en kan ze ook niet invullen. Het is echter onwaarschijnlijk dat een botje de CSS controleert en die botjes vullen dan wel wat onzin in. Misschien handig om wanneer de velden wél zijn ingevuld een 403 of 404 error terug te geven?
Het is voor echte bezoekers gebruiksvriendelijker dan een captcha want ze merken er niets van.
Ik raad je ook aan om de namen van de huidige velden aan te passen zodat de botjes waar je nu al last van hebt ook niet meer werken.
-
16-01-2010, 15:58 #12
- Berichten
- 257
- Lid sinds
- 15 Jaar
Code:<form name="form" method="post" action="/contactform/contactscript.php"> <table border="0" cellspacing="2" cellpadding="2" style="margin-left : 30px;"> <tr> <td valign="top" align="right">Uw naam: </td> <td width="200" valign="top" align="left"> <input type="text" name="name" size="25" maxlength="200" /> </td> </tr><tr> <td valign="top" align="right">Uw e-mail: </td> <td width="200" valign="top" align="left"> <input type="text" name="email" size="25" maxlength="100" /> </td> </tr><tr> <td valign="top" align="right">Uw bericht: </td> <td width="200" valign="top" align="left"> <textarea name="msg" cols="50" rows="7"></textarea> <input class="msg2" type="text" name="msg2" size="25" maxlength="100" /> </td> </tr><tr> <td valign="top"> </td> <td valign="top" style="text-align : right;"> <input type="image" src="./images_/send_button.gif" alt="verstuur" name="Submit" value="verstuur" style="border-bottom : 1px solid #666666;" /> </td> </tr> </table> </form>
Code:form input.msg2 { display:none; visibility:hidden; }
PHP:
Code:<?php // VALUES FROM THE FORM $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['msg']; $must_be_empty = $_POST['msg2']; // ERROR & SECURITY CHECKS if ( ( !$email ) || ( strlen($_POST['email']) > 200 ) || ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) ) ) { print "Error: Invalid E-Mail Address"; exit; } if ( ( !$name ) || ( strlen($name) > 100 ) || ( preg_match("/[:=@\<\>]/", $name) ) ) { print "Fout: ongeldige naam"; exit; } if ( preg_match("#cc:#i", $message, $matches) ) { print "Fout: ongeldige header"; exit; } if ( (!$message) || ($must_be_empty) ) { print "Fout: geen bericht"; //print "Message1: $message <br>"; //print "Message2: $must_be_empty <br>"; exit; } // CREATE THE EMAIL $headers = "Content-Type: text/plain; charset=iso-8859-1\n"; $headers .= "From: $name <$email>\n"; $recipient = "info@JOUWWEBSITE.nl"; $subject = "Contact vanaf je website"; $message = wordwrap($message, 1024); // SEND THE EMAIL TO YOU //mail($recipient, $subject, stripslashes($msg), $headers); mail($recipient, $subject, $message, $headers); // REDIRECT TO THE THANKS PAGE header("location: http://www.JOUWWEBSITE/verzonden.php"); ?>
Laatst aangepast door Ruud van der Velden : 16-01-2010 om 16:05 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic