Hallo
Das unten gezeigte Script gibt einen Fehler aus:
PHP Notice: Undefined index: ...
Das kommt immer dann vor, wenn es keinen Referer gibt.
Das ist klar. Der Browser sendet keinen Referer wenn es keinen gibt, weil die Seite direkt aufgerufen wurde oder der Besitzer das abgeschaltet hat. Dann ist $_SERVER["HTTP_REFERER"] nicht besetzt und PHP wirft Dir eine Notiz vor die Füße. Lösungen sind klassisch:
if ( isset( $_SERVER["HTTP_REFERER"] ) ) {
$visitor_referer = $_SERVER["HTTP_REFERER"];
} else {
$visitor_referer = false;
}
weniger klassisch hast Du bereits weiter unten das unschöne hier abgeschrieben:
@mail($mail_to, $mail_subject, $mail_text, $mail_extras);
Das '@' unterdrückt nämlich Notizen. Das Error-Reporting sollte man anders steuern.
Was Du machst ist sehr gefährlich:##
-
Allein schon, dass Du das Mail HTML-formatiert versendest, ist ein grober Fehlgriff, weil unnötig. Und das provoziert weitere Gefahren, die sich auch als ausnutzbar erweisen:
-
Das hier ist echt gefährlich:
$mail_text .= "<p>User Agent: <b>$visitor_agent</b></p>";
Hier kann ich (und jeder kleine Chinese) Dir wunderbare Skripte oder eine, sogar mehrere beliebige URLs zu "Grafiken" senden. Etwas wie "<img src="http://192.168.1.0/action.cgi?action=setpassword&password=strastwuite"> Da brauchst Du weder Alexa noch ein Kleinkind um mit Deiner Kreditkarte Leistungen zu bezahlen, die Du gar nicht willst. Außerdem wird Dein DSL- oder Kabelrouter dann möglicherweise kostenlos von einem russischen Dienstleister konfiguriert und überwacht, was dazu führt, dass der Webserver Deiner Bank plötzlich in ein merkwürdiges Rechenzentrum umzieht und sich andere Gedanken um Deine Geldanlagen machen.
Dieses Problem besteht bei allen Daten, welche der User-Agent sendet. Also auch beim Referer, beim HTTP_USER_AGENT, sogar bei der URL.
Derjenige, der das Skript online gestellt hat, ist Künstler, kein Techniker. Das Skript ist "bad, bad bad"!
Nochwas: Bei jedem 404er (NOT FOUND) ein Mail zu bekommen nervt. Das ist das beste daran: Den Mist wirst Du schnell wieder abschalten, was die Gefahren mindert.