schu_mi Geschrieben 21. November 2010 Teilen Geschrieben 21. November 2010 Hallo, habe ein Kontaktformular mit einem Dateiupload super am laufen. Die Daten werden an die Mail als Anhang angehäng. Wie kann ich dieses erweitern, so dass mehrere datein hochgeladen werden können. am liebsten wenn ich mehrere dieser zeilen untereinander hab. <tr> <td><span class="Stil16">Upload</span></td> <td colspan="3"><input name="Anhang" size="57" type="file"></td> </tr>[/PHP] wie kann ich diese auslesen lassen, damit alle daten der email angehängt werden. Vielen Dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schandfleck Geschrieben 22. November 2010 Teilen Geschrieben 22. November 2010 Mehere Zeilen mit Upload-Feldern untereinander ist zunächst kein Problem. Du mußt nur jedem <input>-Feld einen eigenen Namen mit dem name-Parameter zuweisen. Das PHP-Script mußt Du freilich auch anpassen, damit es die zusätzlichen Dateien verarbeitet. Am Besten Du postest den Code hier, wenn Du konkretere Hilfe haben möchtest. Ciao, Schandfleck Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schu_mi Geschrieben 22. November 2010 Autor Teilen Geschrieben 22. November 2010 Auslesen lass ich die <input>-Felder folgendermaßen: <?php $Empfaenger = "meine@adresse.de"; if($_REQUEST['Submit']) { if(empty($_REQUEST['Nachname']) || empty($_REQUEST['Emailadresse']) || empty($_REQUEST['Vorname'])) { echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!"; } else { $Mailbetreff .= "Betreff - "; $Mailbetreff .= $_REQUEST['Verwendung']; $Trenner = md5(uniqid(time())); $Header .= "From: ".$_REQUEST['Emailadresse']; $Header .= "\n"; $Header .= "MIME-Version: 1.0"; $Header .= "\n"; $Header .= "Content-Type: multipart/mixed; boundary=$Trenner"; $Header .= "\n\n"; $Header .= "This is a multi-part message in MIME format"; $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: text/plain"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: 8bit"; $Header .= "\n\n"; $Header .= "Sie haben folgende Kontaktanfrage erhalten: \n\n"; while(list($Formularfeld, $Wert) = each($_REQUEST)) { if($Formularfeld != "Submit" && $Formularfeld != "Anhang") { $Header .= $Formularfeld.": ".$Wert."\n"; } } $Header .= "\nDatum/Zeit: "; $Header .= date("d.m.Y H:i:s"); $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: "; $Header .= $_FILES['Anhang']['type']; $Header .= "; name="; $Header .= $_FILES['Anhang']['name']; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename="; $Header .= $_FILES['Anhang']['name']; $Header .= "\n\n"; $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']); $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; $Header .= "--$Trenner--"; mail($Empfaenger, $Mailbetreff, "", $Header); echo"Vielen Dank für Ihre eMail!"; } } else { ?> [/PHP] Leider funktioniert das echo"vielen Dank für ihre email nicht" wäre jetzt nicht so schlimm. viel wichtiger ist der upload mehrerer Dateien. Vielen Dank schon mal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 22. November 2010 Teilen Geschrieben 22. November 2010 1. $_FILES ist ein assoziatives Array. 2. Dein Input heißt 'Anhang'. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schandfleck Geschrieben 23. November 2010 Teilen Geschrieben 23. November 2010 Auslesen lass ich die <input>-Felder folgendermaßen: <?php $Header .= "\nDatum/Zeit: "; $Header .= date("d.m.Y H:i:s"); $Header .= "\n"; // Beginn Code-Block zum Dateianhängen $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: "; $Header .= $_FILES['Anhang']['type']; $Header .= "; name="; $Header .= $_FILES['Anhang']['name']; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename="; $Header .= $_FILES['Anhang']['name']; $Header .= "\n\n"; $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']); $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; // Ende eines Anhanges $Header .= "--$Trenner--"; mail($Empfaenger, $Mailbetreff, "", $Header); ?> [/PHP] Leider funktioniert das echo"vielen Dank für ihre email nicht" wäre jetzt nicht so schlimm. viel wichtiger ist der upload mehrerer Dateien. Vielen Dank schon mal Wenn Du mehrere Upload-Felder im Formular hast, wiederhole den gekennzeichneten Code-Block entsprechend oft und passe die Namen entsprechend Deinem HTML-Code an. (z.B. Anhang1, Anhang2, ...) Allerdings ist Dein PHP-Code qualitativ noch verbesserungswürdig. Vorallem besteht Missbrauchsgefahr, da Du Nutzereingaben ungeprüft in den Header übernimmst. Wenn es jemand geschickt anstellt, kann er mit Deinem Formular E-Mails mit beliebigem Inhalt an beliebige Empfänger versenden. Schaue Dir mal bei PEAR die Klassen Mail und Mail_Mime an. (Beispiele sollten sich mit Google finden lassen.) Es sei denn, Du willst lernen, wie man E-Mails »zu Fuß« erstellt. Zu der fehlenden echo-Ausgabe, konnte ich so nichts feststellen. Schaue Dir mal den Quelltext der Seite im Browser an, nachdem Du das Formular abgeschickt hast. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schu_mi Geschrieben 23. November 2010 Autor Teilen Geschrieben 23. November 2010 (bearbeitet) Vielen Dank.Hat soweit super geklappt. Habe jetzt 4 Upload-Zeilen. Wenn jedoch nicht in jeder eine datei hochgeladen wird, bekomm ich für die jeweils leeren eine Fehlermeldung. Die Nachricht wurde mit den Anhängen jedoch erfolgreich gesendet und ist auch angekommen. Zum Beispiel hier: (nur ein Anhang hochgeladen in "Anhang3") Warning: fread(): supplied argument is not a valid stream resource in /hp/bb/ab/em/www/www.website.de/temp/send.php on line 57 Warning: fread(): supplied argument is not a valid stream resource in /hp/bb/ab/em/www/www.website.de/temp/send.php on line 72 Warning: fread(): supplied argument is not a valid stream resource in /hp/bb/ab/em/www/www.website.de/temp/send.php on line 102 Habe den PHP-Code hier nochmal für euch. $Header .= "\nDatum/Zeit: "; $Header .= date("d.m.Y H:i:s"); $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: "; $Header .= $_FILES['Anhang']['type']; $Header .= "; name="; $Header .= $_FILES['Anhang']['name']; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename="; $Header .= $_FILES['Anhang']['name']; $Header .= "\n\n"; $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']); $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: "; $Header .= $_FILES['Anhang2']['type']; $Header .= "; name="; $Header .= $_FILES['Anhang2']['name']; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename="; $Header .= $_FILES['Anhang2']['name']; $Header .= "\n\n"; $Dateiinhalt = fread(fopen($_FILES['Anhang2']['tmp_name'], "r"), $_FILES['Anhang2']['size']); $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: "; $Header .= $_FILES['Anhang3']['type']; $Header .= "; name="; $Header .= $_FILES['Anhang3']['name']; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename="; $Header .= $_FILES['Anhang3']['name']; $Header .= "\n\n"; $Dateiinhalt = fread(fopen($_FILES['Anhang3']['tmp_name'], "r"), $_FILES['Anhang3']['size']); $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: "; $Header .= $_FILES['Anhang4']['type']; $Header .= "; name="; $Header .= $_FILES['Anhang4']['name']; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename="; $Header .= $_FILES['Anhang4']['name']; $Header .= "\n\n"; $Dateiinhalt = fread(fopen($_FILES['Anhang4']['tmp_name'], "r"), $_FILES['Anhang4']['size']); $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; $Header .= "--$Trenner--"; mail($Empfaenger, $Mailbetreff, "", $Header);[/PHP] Weiß jemend wie ich diese Fehlermeldungen beheben kann? Vielen Dank Bearbeitet 23. November 2010 von schu_mi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 23. November 2010 Teilen Geschrieben 23. November 2010 Weiß jemend wie ich diese Fehlermeldungen beheben kann? In dem du prüfst, ob die Datei überhaupt hochgeladen wurde, die du anhängen willst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schandfleck Geschrieben 24. November 2010 Teilen Geschrieben 24. November 2010 Weiß jemend wie ich diese Fehlermeldungen beheben kann? Du kennst ja die Code-Blöcke, die für die einzelnen Anhänge zuständig sind. Du musst nur eine Abfrage einfügen, so dass die Code-Blöke nur ausgeführt werden, wenn die Datei auch vorhanden ist. In diesem Forum wird auf Hilfe zur Selbsthilfe gesetzt. Deshalb gebe ich nicht einfach den Code an. Du scheinst Programmieranfänger zu seien. Das nimmt Dir hier niemand übel, aber probiere es erstmal selbst. Wenn Du Schwierigkeiten hast, darft Du hier natürlich fragen. Der Code-Schnipsel, den Du verwendest ist, leider nicht geeignet, um ernsthaft genutzt zu werden; geistert aber immerwieder durch Foren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schandfleck Geschrieben 24. November 2010 Teilen Geschrieben 24. November 2010 weitere Informationen hier: PHP: if - Manual Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.