Input controle (hoe moet het wel)

Gebruik bij het verwerken van het formulier binnen php de onderstaande functies voor ALLE velden die in de header worden opgenomen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
$name
= stripslashes($_POST["name"]);
$email = stripslashes($_POST["email"]);

if(isEmail($email)) // Merk op dat een 'goed' emailadres zowiezo nooit een [enter] of quote kan bevatten
{
    $header = "From: \"" . protectMailHeaders($name) . "\" <" . $email . ">";
}

else // Fout afhandelen
{
    exit("Ongeldig emailadres");
}

function
protectMailHeaders($string)
{

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

    return $string;
}

function
isEmail($string)
{

    $result = false;

    if($string != "")
    {

        $expr = "/^([a-zA-Z0-9]){1,}(([a-zA-Z0-9\-_])|(([\.]){1,1}  
-opmaakbreak-
([a-zA-Z0-9]){1,})){0,}([@]){1,1}([a-zA-Z0-9]){1,}
-opmaakbreak-
(([a-zA-Z0-9\-_])|(([\.]){1,1}([a-zA-Z0-9]){1,})){0,}
-opmaakbreak-
([\.]){1,1}([a-zA-Z0-9]){2,4}$/"
;
        if(preg_match($expr, $string)) // voldoet aan expressie
        {
            $result = true;
        }
    }


    return $result;
}


?>


Merk op: Spammers proberen een formulier op tientalle manieren uit voor ze de strijd opgeven. Wat hier mooi zou zijn, is dat je eerst detecteert of een spammer probeert je formulier te hacken (door de waarden van velden te doorzoeken op headers als 'cc:' en 'bcc:'. Indien deze worden gevonden, zou je ze direct moeten attenderen dat jou formulier 'spamvrij' is (iets voor een keurmerk? :P), hierdoor geven ze eerder op, want uiteindelijk voor iedereen beter is. Ik kom hier nog op terug, want ik ben voor m'n werk al met iets dergelijks bezig (:

Iemand nog toevoegingen?

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Waarom deze tutorial?
  2. Input controle (hoe moet het niet)
  3. Waar gaat het mis?
  4. Input controle (hoe moet het wel)
  5. Hoe kun je dit voorkomen?

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.