12 berichten aan het bekijken - 1 tot 12 (van in totaal 12)
  • Q:
    Bijdrager
    The JM

    Spam via contactformulier

    Ik heb last van spam-berichten die via een contactformulier op m’n site binnen komen. Hoe kan ik het formulier beter beveiligen?

    [code:1:9d236fb644]<?
    $mail_ontv = "[email protected]";

    function checkmail($mail)
    {
    $email_host = explode("@", $mail);
    $email_host = $email_host[’1’];
    $email_resolved = gethostbyname($email_host);

    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$mail))
    $valid = 1;

    return $valid;
    }

    // velden nakijken
    if (!$_POST[’submit’] || $_POST[’submit’] && (!$_POST[’naam’] || !$_POST[’mail’] || !checkmail($_POST[’mail’]) || !$_POST[’msggs’] || !$_POST[’onderwerp’]))
    {
    if ($_POST[’submit’] && (!$_POST[’naam’] || !$_POST[’mail’] || !checkmail($_POST[’mail’]) || !$_POST[’msggs’] || !$_POST[’onderwerp’]))
    {
    echo "Vul a.u.b. alle velden juist in.<br><br>";
    }

    // form + tabel
    echo "<table border="0" cellspacing="0" cellpadding="0">";
    echo "<form method="POST" ACTION="" . $_SERVER[’PHP_SELF’] . "">";

    // naam
    echo "<tr><td>Naam:</td></tr>";
    echo "<tr><td><input type="text" size="47" name="naam" value="" . $_POST[’naam’] . ""></td></tr>";

    // space
    echo "<tr><td>&nbsp;</td></tr>";

    // mail
    echo "<tr><td>E-mailadres:</td></tr>";
    echo "<tr><td><input type="text" size="47" name="mail" value="" . $_POST[’mail’] . ""></td></tr>";

    // space
    echo "<tr><td>&nbsp;</td></tr>";

    // onderwerp
    echo "<tr><td>Onderwerp:</td></tr>";
    echo "<tr><td><input type="text" size="47" name="onderwerp" value="" . $_POST[’onderwerp’] . ""></td></tr>";

    // space
    echo "<tr><td>&nbsp;</td></tr>";

    // bericht
    echo "<tr><td>Bericht:</td></tr>";
    echo "<tr><td><TEXTAREA name="msggs" style="max-width:335px" ROWS="6" COLS="45">" . htmlentities($_POST[’msggs’]) . "</TEXTAREA></td></tr>";

    // space
    echo "<tr><td>&nbsp;</td></tr>";

    // button
    echo "<tr><td>&nbsp;</td></tr>";
    echo "<tr><td><input type="submit" name="submit" value="Versturen">&nbsp;<input class="button" type="reset" name="reset" value="Wissen"></td></tr>";

    // sluit form + tabel
    echo "</form>";
    echo "</table>";
    }
    // versturen naar
    else
    {
    // set datum
    $datum = date("d.m.Y H:i");

    // set ip
    $ip = $_SERVER[’REMOTE_ADDR’];

    $inhoud_mail = "===================================================n";
    $inhoud_mail .= "Contactformulier op http://www.flstudio.nln";
    $inhoud_mail .= "===================================================nn";

    $inhoud_mail .= "Naam: " . $_POST[’naam’] . "n";
    $inhoud_mail .= "E-mail adres: " . $_POST[’mail’] . "nn";
    $inhoud_mail .= "—Bericht—n";
    $inhoud_mail .= $_POST[’msggs’] . "nn";

    $inhoud_mail .= "—Gebruikersinformatie—n";
    $inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "n";
    $inhoud_mail .= "Browser-info: ".$_SERVER["HTTP_USER_AGENT"]."rn";
    $inhoud_mail .= "Gestuurd vanaf: ".$_SERVER["HTTP_REFERER"];

    // ——————–
    // spambot protectie
    // ——————–

    $headers = "From: " . $_POST[’naam’] . " <" . $_POST[’mail’] . ">";

    $headers = stripslashes($headers);
    $headers = str_replace("n", "", $headers); // Verwijder n
    $headers = str_replace("r", "", $headers); // Verwijder r
    $headers = str_replace(""", "\"", str_replace("\", "\\", $headers)); // Slashes van quotes

    $_POST[’onderwerp’] = str_replace("n", "", $_POST[’onderwerp’]); // Verwijder n
    $_POST[’onderwerp’] = str_replace("r", "", $_POST[’onderwerp’]); // Verwijder r
    $_POST[’onderwerp’] = str_replace(""", "\"", str_replace("\", "\\", $_POST[’onderwerp’])); // Slashes van quotes

    mail($mail_ontv, $_POST[’onderwerp’], $inhoud_mail, $headers);

    echo "<h1>Je e-mail is verstuurd</h1>";

    echo "<p>Bedankt voor het versturen van een e-mail. Je zult snel een antwoord ";
    echo "krijgen indien dit nodig is.</p>";
    }
    ?>[/code:1:9d236fb644]

    Bijdrager
    Sunneh

    Misschien een Captcha erop zetten..

    Bijdrager
    me.com

    Inderdaad.. een Captcha erop zetten.

    Ik heb overigens hetzelfde contactformulier op webflip.nl staan, maar heb totaal geen last van spam en andere dingen.
    Vreemd.

    Bijdrager
    All-Father

    Of een melding bij het formulier plaatsen

    “Dear spammer, please don’t use this” 8)

    Bijdrager
    Almerrrrr

    Ik kwam laatst dit tegen ook wel handig Reverse Captcha

    Bijdrager
    The JM
    ”Almerrrrr”

    Ik kwam laatst dit tegen ook wel handig Reverse Captcha

    Dat begrijp ik niet helemaal..

    Bijdrager
    Nielsvr
    ”The
    ”Almerrrrr”

    Ik kwam laatst dit tegen ook wel handig Reverse Captcha

    Dat begrijp ik niet helemaal..

    Het leuke aan bots is, is dat ze alles invullen. De tip is dus om een veld in je formulier op te nemen die je met een CSS code verstopt. Vervolgens doe je in je formulier controle een controle of het veld nog steeds leeg is. Zo ja: normale gebruiker, zo nee: een bot. Normale gebruikers zullen door de CSS code het veld niet zien en leeg laten. Bots parsen de webpagina anders en zullen alle velden invullen.

    Bijdrager
    The JM

    Ahzo, oke. Ik heb het toegevoegd, en we zullen zien of het effect heeft.

    Geblokkeerd
    Anoniem
    ”Nielsvr”
    ”The
    ”Almerrrrr”

    Ik kwam laatst dit tegen ook wel handig Reverse Captcha

    Dat begrijp ik niet helemaal..

    Het leuke aan bots is, is dat ze alles invullen. De tip is dus om een veld in je formulier op te nemen die je met een CSS code verstopt. Vervolgens doe je in je formulier controle een controle of het veld nog steeds leeg is. Zo ja: normale gebruiker, zo nee: een bot. Normale gebruikers zullen door de CSS code het veld niet zien en leeg laten. Bots parsen de webpagina anders en zullen alle velden invullen.

    Dat is echt best wel cool…

    Bijdrager
    nipro

    Heel effectief:

    random getal in de sessie opslaan, vervolgens deze gewoon echoo’en op de pagina, in een label ofzo. Vervolgens laat je die random waarde door de gebruiker overtypen. Daarna check je even of de ingetypte waarde overeen komt met hetgeen in je sessie. De meeste spambots te dom om het te omzeilen.:)

    Bijdrager
    The JM

    Maar gebruikers hebben geen last van die oplossing met een verborgen tekst-veld. En dat is altijd beter, vind ik.

    Bijdrager
    arri
    ”nipro”

    Heel effectief..

    een voorbeeld: http://evolt.org/simple-captcha

12 berichten aan het bekijken - 1 tot 12 (van in totaal 12)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.