Antoniodc hat gesagt.:
Das einzige ist, das er sich beim zurückgehen, nicht den haken bei "kopie an Absender" und die Angehängte Datei merkt. Und er zeigt den Betreff nicht an, wenn ich keinen Anhang mitsende.
Das mit der Datei lässt sich IMHO nicht ändern. Denn file-Input-Felder sind etwas besonderes, da sie Zugriff auf Inhalte außerhalb der Browser-Sandbox zulassen.
Der Haken: Ist wahrscheinlich nicht so ohne weiteres zu lösen. Vermutlich nur mit Java-Script. Dazu müsstest du eine eigene JS-Funktion schreiben, die die Informationen irgendwie auf die vorherige Seite transportiert. Frag mich nicht, wie das gehen könnte, so fit bin ich in JS nicht.
Grundsätzlich würde ich eh davon abraten, diese "Gehen Sie eine Seite zurück"-Taktik zu verwenden. Warum stellst du nicht einfach das Formular unten mit den Werten aus dem POST-Request gefüllt her? Da wäre das mit Haken ein Klacks ;-)
Betreffend Betreff bei senden ohne Anhang: Wenn ich den Code richtig lese, hast du einen Fehler beim Aufruf in Zeile 123. Dort steht derzeit:
PHP:
if (@mail($mailto,$text,$mail_subject,$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
Die Syntax von mail() sieht aber so aus:
Code:
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
Du hast $text und $mail_subject vertauscht.
Allerdings habe ich mir mal angesehen, wie es zu diesem $mail_subject eigentlich kommt. Du hast in Zeile 55 folgenden Code stehen:
PHP:
if ($subject != "") $mail_subject = $subject; else $mail_subject = $kontakt;
Allerdings sehe ich nicht, wo $subject jemals definiert wird. Das bedeutet, du wirst nie etwas anderes als $kontakt im Betreff der Email haben und eigentlich sollte dein Script einen "Notice undefined variable" werfen.
Schreib doch mal zum Testen in die vierte Zeile
PHP:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);