dedlfix: Einfaches Formular

Beitrag lesen

echo $begrüßung;

Es lag an Register Globals. Läuft nun. Danke

Übrigens lässt sich dieses Script als Spamschleuder missbrauchen.

$rec="meinemail@gmx.net";
    $mailtext.=" Formular: Nachricht  \n\n";

$mailtext wurde nicht initialisiert, aber hier wird es um einen Text erweitert. Das wäre nicht weiter tragisch, wenn durch register_globals=on nicht einfach auch noch ein Wert für mailtext mitgegeben werden könnte, der dann bereits in $mailtext drinsteht, bevor hier der Text angehängt wird. Der . vor dem = gehört dort nicht hin.
Aus Spamschleuder-Sicht besteht aber keine Gefahr, da $mailtext im Body landet und dort ungefährlich ist.

$mailtext.="Name: \n $name\n\n";
    $mailtext.="E-Mail: \n $email\n\n";
    $mailtext.="Nachricht: \n";
    $mailtext.="$nachricht \n\n";

Der Teil ist unkritsch.

mail("$rec" , " website " , $mailtext , "from: $email");

Hier kann es dann passieren. Eine Kleinigkeit vorweg: Die "" um $rec sind überflüssig.
Der Inhalt von $email wird vom Script ohne Prüfung in eine Header-Zeile übernommen. Wenn nun jemand statt einem einfachen adresse@example.com eine Mailadresse gefolgt von einem Zeilenumbruch und einer Cc:- oder Bcc:-Zeile mitsendet, bekommt nicht nur $rec eine Mail sondern auch die hier angegebenen Adressen. Du siehst den Missbrauch zwar in deinem Maileingang, doch wenn du den erst abends kontrollierst ist es zu spät, und du stehst sicher schon auf der Blacklist der Provider.

In eine Email-Adresse gehören keine Zeilenumbruchzeichen, deswegen müssen sie dort raus, wenn sie jemand eingefügt hat. Die folgende Zeile oberhalb von mail(...) eingebaut entfernt alle Zeilenumbruchszeichen aus der Adresse. Wenn jemand Mist reinschreibt, sieht das dann zwar etwas komisch aus, ist nun aber ungefährlich.

$email = str_replace(array("\r", "\n"), '', $email);

Dass trotzdem jemand versucht, das Formular zu missbrauchen kannst du nicht verhindern. Du kannst höchstens noch weitere Hürden einbauen und hoffen, dass das Spam-Programm sie nicht nimmt.

echo "$verabschiedung $name";