Et+brugervenligt+spam-filter

Når store firmaer i dag skal på deres hjemmeside har et forum, en gæstebog en kontaktsider vil de for alt i verden gerne undgå spam. Det er ikke spam fra mennesker - det er spam fra såkaldte spambots eller spamrobotter, der helt automatisk kan oprette brugere eller skrive i gæstebøger.

Mange firmaer løser dette problem på en måde, der er irriterende for brugeren, og som bestemt ikke er brugervenlig. Mange har sikkert oplevet, når de skal oprette en bruger et sted eller når de skal i en gæstebog, at støder på noget, der ligner:



Det er lavet, så ikke robotter ikke kan genkende teksten og skrive teksten i feltet. Det er temmelig sikkert, så ingen robotter kan oprette en bruger - men det er til gengæld utrolig irriterende for brugeren.

Det kan gøres meget nemmere for brugeren. Der er nogen, der vælger at forsimple det en smule og så spørge "Hvad er 2+2?", hvor brugeren så skal skrive "4" i et felt, før brugeren bliver oprettet. Men problemet er, at man stadigvæk tvinger brugeren til at gøre noget ekstra. Til at skrive noget i et felt.

Det er jo ikke brugerens skyld, at firmaet bag hjemmesiden har problemer med spamrobotter, og det kan derfor ikke være brugerens job at hjælpe til.

Problemet kan løses meget nemmere - både for brugeren - hvor brugeren ikke skal gøre noget - men også for udvikleren, da det er langt nemmere at programmere og holde styr på end overstående. Løsningen ligger i, at spamrobotter har det med at udfylde alle felter, som de kan komme afsted med. Idéen er så at have flere felter, end man har brug for. Robotten vil så udfylde felterne, og man ville så fx med PHP tjekke om, felterne er udfyldt eller ej. For at sikre, at mennesket ikke udfylder felterne, kan man skjule dem med CSS. På den måde kan tjekke om feltet er udfyldt - hvis det er udfyldt, skal brugeren ikke oprettes, og hvis det ikke er udfyldt, antager vi at et menneske har udfyldt resten, og vi opretter brugeren.

Hvis vi siger, at vi har at gøre med en gæstebog, kunne vi have formular, der ser således ud:

code format="html4strict"  Navn:  Besked:    code

Vi tilføjer så nu **tre** ekstra felter og giver dem navne, der virker naturlige. Vi kunne kalde siden **gb.php**:

code format="html4strict"  Navn:  Besked:      code Alle tre felter har vi givet class'en **red**, som vi nu kan skjule med CSS - vi giver dem simpelthen en position uden for skærmbilledet, og de bliver derfor ikke synlige for mennesket. Men robotter er ligeglade:

Nu kan vi så med PHP tjekke, om felterne er udfyldt eller ej. Hvis bare ét af dem er udfyldt, afviser vi og sender ikke beskeden. Vi kunne kalde siden indsend.php:

code format="php" if ((isset($_POST["subject"]) && $_POST["subject"]!="") || (isset($_POST["name"]) && $_POST["name"]!="") || (isset($_POST["message"]) && $_POST["message"]!="")) { header("Location: gb.php"); } else { //Indsæt beskeden i databasen } code Det vil altså sige, at hvis én af de tre felter er udfyldt, så går vi blot tilbage til gæstebogen uden at gøre mere, men hvis ingen af dem er udfyldt - så kan bare bare indsætte beskeden i databasen.

Skrevet af **Emil Madsen Bennedsen**