gudn tach!
$absender = preg_replace( "/[^a-z0-9 !?:;,./_-=+@#$&*()]/im", "", $_POST['absenderemail'] );
> Wieso wird $absender im Header später noch richtig ausgegeben, wenn doch das @-Symbol als Zeichen in der Funktion angegeben ist?
^ als erstes zeichen innerhalb einer zeichenklasse negiert die zeichenklasse.
/[^abc]/ heisst also "ein zeichen, dass weder 'a' noch 'b' noch 'c' ist".
abgesehen davon ist das "bereinigen", wie es [dr. web](http://www.drweb.de/webmaster/kontakt-formulare.shtml) vorschlaegt, nicht immer sinnvoll. beachte dazu den kommentar [#6.1 im genannten blog](http://blog.php-security.org/archives/76-Holes-in-most-preg_match-filters.html#c7186).
ich denke zwar - entgegen Stefan Esser -, dass bei e-mail-adressen z.b. in einem formular nichts dagegen spricht, einen etwaigen abschliessenden zeilenumbruch einfach zu entfernen, aber automatisch alle "meistens-verbotenen" zeichen zu entfernen (wie es dr. web vorschlaegt), ist imho eine zu naive vorgehensweise.
prost
seth