Hallo oxo888oxo,
Die Mails werden dann auch versendet, aber PHP gibt eine Fehlermeldung.
Dann hast Du was anderes falsch gemacht.
Du kannst Dir Arbeit sparen, wenn Du die filter_input Funktion verwendest.
$referer = filter_input(INPUT_SERVER, "HTTP_REFERER");
$text =
"Seite: https://example.org$dateiname
Quelle: $referer
$useragent";
Aber gut ist das auch nicht. Für mehrzeilige Strings nimmt man eigentlich heredoc-Strings:
$text = <<<EOS
Seite: https://example.org$dateiname
Quelle: $referer
$useragent
EOS;
Wobei das auch noch nicht das Beste ist. Ich würde das mit dem Ausgabepuffer lösen. PHP ist eine Sprache für Templates, nicht für Stringverkettung:
ob_start();
?>
Seite: https://example.org<?= filter_input(INPUT_SERVER, "REQUEST_URI") ?>
Quelle: <?= filter_input(INPUT_SERVER, "HTTP_REFERER") ?>
<?= filter_input(INPUT_SERVER, "HTTP_USER_AGENT") ?>
<?php
$text = ob_get_clean();
Dieses Script schaltet die Ausgabepufferung ein, d.h. alles, was das Script jetzt ausgibt, wird zwischengespeichert. Dann wird der PHP Modus beendet und der Mail-Body "ausgegeben". Der geht in den Puffer. Die variablen Werte werden mit <?= ... ?> in den Text eingebaut. filter_input kümmert sich darum, dass fehlende $_SERVER-Einträge zum Leerstring werden.
Danach geht's zurück nach PHP und der Buffer wird mit ob_get_clean ausgelesen und geleert.
Was mir derzeit nicht klar ist, ist die Frage, ob man für einen Mail-Body Zeichen maskieren muss oder ob man blindlings den Inhalt der $_SERVER-Werte hinausrotzen kann. Du erzeugst dem Anschein nach keine HTML Mail, deshalb braucht es keine HTML Maskierung. Aber vielleicht eine andere. Dedlfix? Weißt Du das?
Rolf
sumpsi - posui - obstruxi