Webdesign in Siegen

Formular mit Dateianhang

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Formular mit Dateianhang

Beitragvon -Denise- am 22.04.2008, 09:31

Huhu!
Ich suche jetz schon seit Stunden nach einer Lösung aber so richtig hab ich noch nichts gefunden... :cry:
Ich möchte ein Formular mit Dateianhang erstellen... Also die Datei soll an die verschickte Email mit rangehangen werden... So weit alles klar ich habe
Code: Alles auswählen
enctype="multipart/form-data"


und

Code: Alles auswählen
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<input name="thefile" size="20" type="file" />


nun aber die Frage, was muss ich denn in meine Datei schreiben, damit es auch mit verschickt wird?
Also in die Datei wo die ganzen Eingaben verarbeitet werden...?

Würd mich über schnelle Hilfe freuen :)
Liebe Grüße
Denise
-Denise-
Mitglied
 
Beiträge: 26
Registriert: 18.02.2008, 19:04
Wohnort: Sachsen

Re: Formular mit Dateianhang

Beitragvon Avedo am 22.04.2008, 11:02

Hallo!
Hab ma schnell zwischen meinen Links gesucht und TaDada habe ich einen für dich gefunden. Ich hoffe, dass dir das weiterhilft.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 464
Registriert: 09.12.2007, 20:12
Wohnort: Göttingen

Re: Formular mit Dateianhang

Beitragvon -Denise- am 22.04.2008, 11:29

wahhh hätt ich den mal eher gefunden... -.-

Naja habs mittlerweile auch hinbekommen, auch so wie da oben in dem Link, halt bloß von nem anderen Script mir das zusammengebastelt, da meine Formularfelder schon etwas umständlich in der Email angezeigt werden sollen^^

Aber ansonsten für normale Formularfelder, die nur untereinander angezeigt werden sollen, finde ich dieses Formular echt praktisch: http://www.webmaster-resource.de/tricks ... it-php.php

ist sogar von der selben Seite wie dein Link.

Aber danke für die Hilfe!

Liebe Grüße Denise :stapelschwein:
-Denise-
Mitglied
 
Beiträge: 26
Registriert: 18.02.2008, 19:04
Wohnort: Sachsen

Re: Formular mit Dateianhang

Beitragvon -Denise- am 22.04.2008, 12:12

habe jetz noch ein Problem, wenn kein Bild ausgewählt ist, dann kommt eine Fehlermeldung:

Warning: fread(): supplied argument is not a valid stream resource in /www/htdocs/w0091088/probe.php on line 78

und auf Zeile 78 steht das:

Code: Alles auswählen
$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);


wie bekomm ich die denn jetzt weg? Es liegt ja daran, dass halt kein Bild ausgewüählt ist, aber ich habe keine Ahnung wie man es zb schreiben kann mit if Bild ist nicht ausgewählt dann ist auch ok ^^ und auch keine Ahnung wohin....
Das ist meine Sende-Datei:

Code: Alles auswählen
<?php

$Empfaenger = "...";

if($_REQUEST['senden'])
{
   if(empty($_REQUEST['name']) || empty($_REQUEST['email']) || empty($_REQUEST['telefon']))
   {
      echo"<b><p><p><p><p align=\center\>Sie haben das Feld Vorname Name, E-Mail oder Telefonnummer nicht ausgefüllt!<br /><a href=\"javascript:history.back();\">zurück</a></b></p></p></p></p>";
   }
   else
   {
      $Mailbetreff = "Bestellung Taschenkalender";

      $Trenner = md5(uniqid(time()));

      $Header = "From: ".$_REQUEST['email'];
      $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 Nachricht erhalten: \n\n";
         if($Formularfeld!="senden" && $Formularfeld!="Anhang")
         {
            $Header .= "Stueckzahl: ".$stueck."\n";
            $Header .= "Motiv: ".$foto."\n";
            $Header .= "Bundeslandja: ".$bundeslandja."\n";
            $Header .= "Bundesland: " .$bundesland."\n";
            $Header .= "Abgerundete Ecken: ".$abgerundeteEcken."\n";
            $Header .= "Farbe: ".$farbe."\n";
            $Header .= "Andere Farbe (falls vorhanden): ".$farbeandere."\n";
            $Header .= "Adresseindruck: \n";
            $Header .= "- ".$adresseindruck1."\n";
            $Header .= "- ".$adresseindruck2."\n";
            $Header .= "- ".$adresseindruck3."\n";
            $Header .= "- ".$adresseindruck4."\n";
            $Header .= "Sprechzeiten: \n";
            $Header .= "- Mo: ".$montag1." / ".$montag2."\n";
            $Header .= "- Di: ".$dienstag1." / ".$dienstag2."\n";
            $Header .= "- Mi: ".$mittwoch1." / ".$mittwoch2."\n";
            $Header .= "- Do: ".$donnerstag1." / ".$donnerstag2."\n";
            $Header .= "- Fr: ".$freitag1." / ".$freitag2."\n";
            $Header .= "- Sa: ".$samstag1." / ".$samstag2."\n";
            $Header .= "Anrede: ".$anrede."\n";
            $Header .= "Titel: ".$titel."\n";
            $Header .= "Name: ".$name."\n";
            $Header .= "Straße: ".$strasse."\n";
            $Header .= "PLZ Ort: ".$plzort."\n";
            $Header .= "E-Mail: ".$email."\n";
            $Header .= "Telefon: ".$telefon."\n";
            $Header .= "Telefax: ".$telefax."\n";
            $Header .= "Nachricht: ".$nachricht."\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"<p align=\center\><b>Vielen Dank für Ihre Bestellung!<br />Wir werden uns umgehend bei Ihnen melden!<br /><a href=\"javascript:history.back();\">zurück</a></p><b>";
   }
}
else
{
?>


Hat jemand ne Ahnung wie ich das jetzt schreibe?

LG Denise
-Denise-
Mitglied
 
Beiträge: 26
Registriert: 18.02.2008, 19:04
Wohnort: Sachsen

Re: Formular mit Dateianhang

Beitragvon -Denise- am 22.04.2008, 15:23

Ok, das Problem hat sich jetz gelöst mit:

Code: Alles auswählen
if(!empty($_POST['Anhang'])){
      $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--";
      }
      else {
      $Header .= "Datei: \n";
         $Header .= "Es wurde keine Datei übergeben.";
      }


Allerdings wollte ich die Felder überprüfen lassen, ob sie ausgefüllt wurden, und weiß nicht so richtig wie ich das mache, mit

Code: Alles auswählen
if(empty($_REQUEST['']))
   {
      echo"<p align=\"center\">";
   }
   if(empty($_REQUEST['stueck']))
   {
      echo"Bitte geben Sie eine Stückzahl an!<br />";
   }
   if(empty($_REQUEST['farbe']))
   {
      echo"Wählen Sie eine Farbe aus!<br />";
   }
   if(empty($_REQUEST['name']))
   {
      echo"Sie haben Ihren Namen nicht angegeben!<br />";
   }
   if(empty($_REQUEST['email']))
   {
      echo"Sie haben das Feld E-Mail nicht ausgefüllt!<br />";
   }
   if(empty($_REQUEST['strasse']))
   {
      echo"Bitte geben Sie die Straße an!<br />";
   }
   if(empty($_REQUEST['plzort']))
   {
      echo"Bitte geben Sie Postleitzahl und Ort an!";
   }
   if(empty($_REQUEST['']))
   {
      echo"<br /><b><a href=\"javascript:history.back();\">zurück</a></b></p>";
   }
   else
   {
      $Mailbetreff = "Bestellung Taschenkalender";
...

klappt das so schon ganz gut aber wenn ich alle ausgefüllt habe, dann steht mein Dankeschön Text nicht mehr da, und ich glaube die Mail kommt dann auch nich an... wie schreib ich das dann?

LG Denise
-Denise-
Mitglied
 
Beiträge: 26
Registriert: 18.02.2008, 19:04
Wohnort: Sachsen


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast