Avatar billede dark-angel Nybegynder
06. januar 2009 - 19:52 Der er 11 kommentarer

undgå spam mails ved formmail script

Hey..
Jeg har på et par hjemmesider sat en formmail ind så brugerne kan sende en mail derfra, men det vælter ind med spam mail, så mit spørgsmål er om der er nogle der vil hjælpe med at lave så man skal skrive en tekst/tal så bliver vist på et billede eller noget i den stil ?

mit php script ser således ud :
<?php

if(!isset($_POST['navn']))
{
    header("Location: ../index.php?page=mailform/kontakt.php");
}

else
{
   
    $navn = $_POST['navn'];
    $mail = $_POST['mail'];
    $emne = $_POST['emne'];
    $besked = $_POST['besked'];
   
    if(empty($navn) || empty($mail) || empty($emne) || empty($besked))
    {
   
        header(\"Location: ../index.php?page=mailform/error1.php");

    }

    else
    {

        if(ereg("^.+@.+\..+$", $mail)) {
       
       
        $sendto = "xxxx@xxx.com";
       
       
        $msg = "Navn: ".$navn."\n";
        $msg .= "E-mail: ".$mail."\n";
        $msg .= "Besked: ".$besked."\n";
       
        $subject = $emne;
       
        if(mail($sendto, $subject, $msg, "From: $mail\r\n" . "Reply-To: $mail\r\n"))
        {
       
        header(\"Location: ../index.php?page=mailform/tak.php");       
        }
        else
        {
        header(\"Location: ../index.php?page=mailform/error2.php");
        }       
    }

        else
        {

        header(\"Location: ../index.php?page=mailform/error3.php");       

        }

}
}
?>
Avatar billede showsource Seniormester
06. januar 2009 - 20:07 #1
Du kan bruge sessions.
Ved hver load af siden med formular, laver du et random navn med rand(), navngi'r et hiddenfelt med det navn, og registrerer den med sessions.

På siden der submittes til tjekker du at $_SESSION["navn"] er sat, og at $_POST[$_SESSION["navn"]] er sat.
Hvis begge er sat, så er det et "brugerinput", og ikke en comp sat op til at submitte bl.a. din formular.
Avatar billede kjeldsted Novice
06. januar 2009 - 20:19 #2
Hm. Umiddelbart lyder det til at være mere sikkert med et system hvor, som du vist også selv nævner, at brugeren kan se nogle tegn på et billede og skal indtaste disse i et felt.

Dog skal du være opmærksom på at der skal tænkes kreativt når billedet skal generes. Har selv tidligere lavet sådan et system, der efterfølgende betød 20 beskeder om dagen, blev sendt :-O

Men det er skal muligt at lave ret sikkert, ved billede og input.
Avatar billede lollaenderen Nybegynder
06. januar 2009 - 20:29 #3
Jeg bruger selv en "Kontaktformular" med spamfælde.
Jeg er selv novice i php, og kan ikke forklare hvorfor det virker.
Her er linket hvor jeg har hentet HTML og PHP filerne:
http://kimludvigsen.dk/programmer-internet-kompozer-trin-php.php#kontaktformular
Siden september 08 har den virket på min hjemmeside.
Avatar billede showsource Seniormester
06. januar 2009 - 20:31 #4
kjeldsted => Hvorfor mere sikker?
Avatar billede showsource Seniormester
06. januar 2009 - 20:34 #5
Skåret lidt ud i pap:
http://www.phpbegynder.dk/artikler.php?id=26&page=1
Fordelen er at brugeren ikke "besværes" med at skulle læse/skrive nogle tegn

Med gdlib:
http://www.eksperten.dk/artikler/1019
Avatar billede kjeldsted Novice
06. januar 2009 - 20:39 #6
Hm... Det er jo så det. Måske fordi jeg aldrig før er stødt på denne løsningsmodel og så tanken om at det jo burde være muligt at snyde sig uden om, hvis halvdelen ligger i HTML.
Avatar billede showsource Seniormester
06. januar 2009 - 20:43 #7
Det ligger jo ikke i html, men serverside ( sessions ), at noget af det ( hiddenfelt ) så bliver udskrevet i html er noget andet.
Avatar billede showsource Seniormester
06. januar 2009 - 20:46 #8
B.t.w. var coder.dk som i et andet spm. om det samme, kom med ideen om et nyt navn til et hiddenfelt ved hver load af en formular
Avatar billede kjeldsted Novice
06. januar 2009 - 20:47 #9
Det er jo egentlig rigtig nok at det kan være svært at skulle få den til at finde frem til et tilfældigt tal ;)

Tror nok jeg kom til at tænke på et hiddenfelt med en tekst som bare skulle være sat, for denne kunne jo let findes. Men selfølgelig bliver det sværere med tilfældige tal
Avatar billede olebole Juniormester
06. januar 2009 - 23:19 #10
<ole>

showsource >> Man må ikke håbe, den koder, der skriver botten, også har læst non-gdlib-artiklen  ;o)

/mvh
</bole>
Avatar billede kjeldsted Novice
11. maj 2011 - 11:36 #11
Bare lige for at samle op.
Er problemet løst? Og i så fald bør tråden lukkes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester