Kontaktformular Anhang wird nicht mit übertragen

Wenn du einigermaßen vernünftig entwickeln willst, genügt Notepad eben nicht. Dir fehlen all die Dinge, die man heutzutage für anständige Entwicklung benötigt. Syntax-Highlighting, um Fehler schneller finden zu können (Klammer-Fehler, String-Enden, etc. etc.). Einen vernünftigen Debugger (für PHP empfiehlt sich entweder xdebug oder der Zend-Debugger als Extension). Code-Completion, Code-Hinting, Dokumentation mittels Tool-Tipps. Kurzum: Verwende Eclipse+PDT ;-)


Danke werde ich mal testen. Kann mir denn jemand zu meinem Problem vielleicht helfeb?
 
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);
 
Hab ich. Bekomme einige sachen angezeigt. Direkt am Anfang = Angezeigt wird: "Notice: Undefined index: Send in /homepages/13/d436049093/htdocs/Reifen-Cologne/Kontaktformular_Reifen_Cologne.php on line 16".
Die ganzen Checkboxen = "Notice: Undefined index: Kontakt in /homepages/13/d436049093/htdocs/Reifen-Cologne/Kontaktformular_Reifen_Cologne.php on line 271" und in den ganzen Felder zum ausfüllen=<br /><b>Notice</b>: Undefined index: Name in <b>/homepages/13/d436049093/htdocs/Reifen-Cologne/Kontaktformular_Reifen_Cologne.php</b> on line <b>234</b><br />.

Ist das jetzt ein Fehler?
 
Naja, es ist unsauberer Programmierstil. Du kannst das aber relativ leicht verbessern. Verwende die Funktion "isset()" um zu prüfen, statt einfach den Index im Array anzusprechen. Statt den Code so zu notieren:

PHP:
if($_REQUEST['Send']){  // Formular abgesendet

schreibe

PHP:
if( isset($_REQUEST['Send']) ){  // Formular abgesendet

Das Resultat ist das gleiche. Jedoch sieht man sofort, was im Code damit bezweckt werden soll.


Bei der zweiten Notice (Zeile 234) kannst du mit dem ternären Operator (Trinitätsoperator) arbeiten. Das sieht dann so aus:

PHP:
				value="<?= isset($_SESSION["Name"]) ? $_SESSION["Name"] : '' ?>"></td>

Der ternäre Operator ist ein ein verkürztest if und so aufgebaut:

Code:
Bedingung ? Wahr : Falsch;


Die dritte Notice ist etwas verzwickter. Aber auch hier gibt es eine adäquate Lösung. Das könnte so aussehen:

PHP:
<?php if( isset($_SESSION['Kontakt']) ) echoCheckedFromArray($_SESSION['Kontakt'], 'Sommerreifen'); ?>>Sommerreifen<br>
 
Zuletzt bearbeitet:
Danke, hab alles geändert. Hab auch keine Fehlermeldung mehr. Wo kann ich das nachlesen, wie du es schreibst ist alles sehr einfach. z.B. :
Code:
Bedingung ? Wahr : Falsch;

?
 
Ich dachte, du hättest eine bessere Seite. Werde mir das mal durchlesen :)

Habe alle Änderungen getätigt. Leider bleibt der Haken bei "Kopie an Absender" und auch die anzuhängende Datei nicht nach Fehleingabe und "zurück" gemerkt.
 
Ich schrieb bereits, dass das mit der Datei nicht funktionieren kann. Der Browser behält diese Information nicht, wenn das Formular abgesendet wurde. Ich sehe da auch keine Chance, das hinzubekommen.

Das mit dem Haken habe ich auch bereits geschrieben.

EDIT: Ich hab jede Menge Seiten, aber die findest du auch selbst mit Google, wenn die dem die richtigen Fragen stellst.
 
Zurück