04. november 2008 - 20:47
Der er
4 kommentarer
captha til mailform
Hej eksperter, Der er sket det at en spambot har fanget min mailformular på min hjemmeside og derved begyndt at spamme mig. Af den grund kunne jeg godt tænke mig en mailform af en art til min formular, så jeg undgår at modtage disse mails. Min kode ser sådan ud nu: ----------- kontakt.php <form method="post" action="mailform.php"> <div class="kontakt"> <div class="kontakttekst">Navn*</div> <div class="kontaktbox"> <input type="text" name="navn" id="navn" size="40" /> </div> </div> <div class="kontakt"> <div class="kontakttekst">Email*</div> <div class="kontaktbox"> <input type="text" name="mail" id="mail" size="40" /> </div> </div> <div class="kontakt"> <div class="kontakttekst">Emne*</div> <div class="kontaktbox"> <input type="text" name="emne" id="emne" size="40" /> </div> </div> <div class="kontakt"> <div class="kontakttekst">Besked*</div> <div class="kontaktbox"> <textarea name="besked" id="besked" rows="8" cols="40" ></textarea> </div> </div> <div class="kontakt"> <div class="kontakttekst"></div> <div class="kontaktbox"> <input type="submit" value="Send" /> </div> </div> </form> <br /><br /> <div class="kontakt" style="font-size:10px;">*Skal udfyldes.</div> ---- mailform.php <?php $name = $_POST['navn'] ; $email = $_POST['mail'] ; $subject = $_POST['emne'] ; $message = $_POST['besked'] ; mail( "email@domænet.her", "Retard.dk - Besked fra $name angående $subject", $message, "From: $email" ); echo "Din besked er hermed sendt. Jeg vil vende tilbage hurtigst muligt."; ?> ------------- Jeg har tilføjet valideringer af formularen via javascript, info skal indtastest korrekt. Men det hjælper intet viser det sig. Hvis nogen kan hjælpe med at indsætte en simpel captcha af en art, ville det være til stor hjælp :) Mange tak på forhånd.
Annonceindlæg tema
05. november 2008 - 01:35
#1
Cirkus: <?php session_start(); $_SESSION["hiddenfelt"] = "php_".rand(); ?><html><head><title>No spam</title> </head> <body> <form method="post" action="mailform.php"> <input type="hidden" name="<?php echo $_SESSION["hiddenfelt"]; ?>"> <div class="kontakt"> <div class="kontakttekst">Navn*</div> <div class="kontaktbox"> <input type="text" name="navn" id="navn" size="40" /> </div> </div> <div class="kontakt"> <div class="kontakttekst">Email*</div> <div class="kontaktbox"> <input type="text" name="mail" id="mail" size="40" /> </div> </div> <div class="kontakt"> <div class="kontakttekst">Emne*</div> <div class="kontaktbox"> <input type="text" name="emne" id="emne" size="40" /> </div> </div> <div class="kontakt"> <div class="kontakttekst">Besked*</div> <div class="kontaktbox"> <textarea name="besked" id="besked" rows="8" cols="40" ></textarea> </div> </div> <div class="kontakt"> <div class="kontakttekst"></div> <div class="kontaktbox"> <input type="submit" value="Send" /> </div> </div> </form> <br /><br /> <div class="kontakt" style="font-size:10px;">*Skal udfyldes.</div> </body></html> og <?php session_start(); if(isset($_SESSION["hiddenfelt"], $_POST[$_SESSION["hiddenfelt"]])) { $name = $_POST['navn'] ; $email = $_POST['mail'] ; $subject = $_POST['emne'] ; $message = $_POST['besked'] ; mail( "email@domænet.her", "Retard.dk - Besked fra $name angående $subject", $message, "From: $email" ); echo "Din besked er hermed sendt. Jeg vil vende tilbage hurtigst muligt."; } ?>
05. november 2008 - 01:36
#2
Hov, efter linien med: if(isset($_SESSION["hiddenfelt"], $_POST[$_SESSION["hiddenfelt"]])) { skal selvf. en unset() !!!!! if(isset($_SESSION["hiddenfelt"], $_POST[$_SESSION["hiddenfelt"]])) { unset($_SESSION["hiddenfelt"]);
05. november 2008 - 21:36
#3
showsource --> Jeg ser ikke noget anderledes inde på min side. Men hvad er det din kode gør på formularen? Ved ikke om det var forkert af mig at gøre... men ændrede det sidste til følgende: if(isset($_SESSION["hiddenfelt"], $_POST[$_SESSION["hiddenfelt"]])) unset($_SESSION["hiddenfelt"]); { er det korrekt eller forkert gjort? :) (flyttede på tuborgparentesen)
06. november 2008 - 13:57
#4
Ja, det er forkert! Ved at bruge sessions, kan man gemme info fra den ene side til den anden. Sammen med rand() bliver et hiddenfelt navngivet forskelligt ved hver load af siden. Navnet registreres med sessions. Siden der postes til bruger også sessions, og tjekker om $_SESSION["hiddenfelt"] er sat, og er den det, om der også er sat en $_POST[$_SESSION["hiddenfelt"]] Hvis det er tilfældet, så er post ok, det er ikke en spamrobot. Derudover bør du nok tjekke på $_POST["email"] at der ikke forsøges at sende spam ud.
Vi tilbyder markedets bedste kurser inden for webudvikling