hallo,
Ik heb last van spam binnenkrijgen via mijn contactformulier.
hoe kan ik dit makkelijk verhelpen?
Ik dacht zelf aan een tijdsinterval, is dat goede oplossing?
Zoja weet iemand hier code van ?
mvg
hallo,
Ik heb last van spam binnenkrijgen via mijn contactformulier.
hoe kan ik dit makkelijk verhelpen?
Ik dacht zelf aan een tijdsinterval, is dat goede oplossing?
Zoja weet iemand hier code van ?
mvg
kijk hier eens naar:
http://ictscripters.com/index.…entryID=15#profileContent
Je zou er gewoon een captcha bij kunnen zetten, of de manier van Fils gebruiken die T.Aaron heeft geplaatst.
Ik snap niks van captcha wie kan me helpen?
rdgweb
Een captcha is een anti-bot code welke (normaal gesproken) alleen door een echt persoon ingevoerd kan worden.
Helaas zijn er een aantal figuren in geslaagd deze uit te kunnen lezen en te beantwoorden waardoor ze niet meer werken.
Mijn blog is een simpele maar effectieve manier om klein gedeelte hiervan aan te pakken, een bot kan zo snel een display:none; niet zien namelijk.
De bot gaat ervan uit dat alles tussen <form> en </form> ingevuld moet worden, inclusief die display: none; veld.
Wanneer de display: none; veld ingevoerd wordt kan je ervan uit gaan dat het een bot is, anders lopen ze met je CSS te kloten waar ze gewoon vanaf moeten blijven.
Ik zou alleen wel de captcha blijven gebruiken aangezien het wel helpt tegen overmatig spammen (bijvoorbeeld F5), wat je ook kan doen is een time maken op IP.
Dat je bijvoorbeeld maar 1x per 15 minuten mag insturen, maar of dit effectief is weet ik niet aangezien ik de display:none; manier steeds vaker gebruik.
Ik heb het nu als volgt:
$first_name = $_POST['name']; // verplicht
$last_name = $_POST['subject']; // verplicht
$email_from = $_POST['email']; // verplicht
$comments = $_POST['message']; // verplicht
$spam = $_POST['username']; // This is our hidden field
if($spam) {
die("No spamming allowed bitch!");
} else {
// Process the form like normal
$email_message = "Gegevens formulier.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Voornaam: ".clean_string($first_name)."\n";
$email_message .= "Achternaam: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Bericht: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); }
Toon Meer
Zo hoort het dus lijk mij?
Ik heb het nu als volgt:
PHPToon Meer$first_name = $_POST['name']; // verplicht $last_name = $_POST['subject']; // verplicht $email_from = $_POST['email']; // verplicht $comments = $_POST['message']; // verplicht $spam = $_POST['username']; // This is our hidden field if($spam) { die("No spamming allowed bitch!"); } else { // Process the form like normal $email_message = "Gegevens formulier.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "Voornaam: ".clean_string($first_name)."\n"; $email_message .= "Achternaam: ".clean_string($last_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Bericht: ".clean_string($comments)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); }
Zo hoort het dus lijk mij?
Zo hoort het te werken ja.
Alleen is bij mij de username niet ontzichtbaar..
zie:
<form method="post" action="verzenden.php" >
<label for="name">Naam:</label>
<input type="text" name="name" id="name" required placeholder="naam" />
<label for="name">Onderwerp:</label>
<input type="text" name="subject" id="subject" required placeholder="onderwerp" />
<label for="email">Email:</label>
<input type="email" name="email" id="email" required placeholder="[email protected]" />
<label for="message">Bericht:</label>
<textarea name="message" id="message" required></textarea>
<li id="user">
<label for="username">Username</label>
<input type="text" name="username">
</li>
<input type="submit" name="submit" value="Verstuur" />
</form>
Toon Meer
Hoe krijg ik die ontzichtbaar dan?
Je moet dit natuurlijk wel in je CSS aanpassen ook.
Zoals erik al zij "display: none;"
Dit toegevoegd in de css:
user {
display:none
}
Maar volgens mij nog steeds zichtbaar?
Weet je wel wat je doet? Maak er eens .user { van.
Voeg dan de class bij de input in en dan werkt het. Wat je nu doet gaat niet werken ;).
Dit toegevoegd in de css:
user {
display:none
}
Maar volgens mij nog steeds zichtbaar?
lI.user moet het zijn
Heb je nog geen account? Registreer je nu en word deel van onze community!