mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 21:00 Benutzername: Passwort: Auto-Login

Thema: Formailer mit Dateianhang -> Fehler wenn kein Bild vom 22.04.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Formailer mit Dateianhang -> Fehler wenn kein Bild
Autor Nachricht
denise2302
Threadersteller

Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht: Weiblich
Verfasst Di 22.04.2008 13:30
Titel

Formailer mit Dateianhang -> Fehler wenn kein Bild

Antworten mit Zitat Zum Seitenanfang

Huhu!

Ich habe einen Formmailer mit Dateianhang gemacht, wenn ich aber keinen Dateianhang mitschicke, dann kommt:

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

Auf der Zeile steht bei mir:

Code:

$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);


Also das Formular wird trotzdem verschickt, allerdings ist halt die Fehlermeldung da... kann ich nicht irgendwas schreiben mit, if keine Datei dabei gehts trotzdem...?? Aber ich weiß nicht wie und wo ich das hinschreiben muss.... Habt ihr da vielleicht eine Lösung?

Das ist mein Sendeteil:

Code:

<?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
{
?>


LG Denise
  View user's profile Private Nachricht senden
Skyw4lker

Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht: Männlich
Verfasst Di 22.04.2008 13:43
Titel

Antworten mit Zitat Zum Seitenanfang

In dem Array
Code:
$_FILES
stehen die Dateien drin die ein User angehangen hat.


Zitat:
Wenn im Formular keine Datei ausgewählt wurde so wird $_FILES['userfile']['size'] von PHP auf 0 gesetzt und $_FILES['userfile']['tmp_name'] ist leer.


Frag das einfach ab und für den entsprechenden Code nicht aus.


Zuletzt bearbeitet von Skyw4lker am Di 22.04.2008 13:46, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
denise2302
Threadersteller

Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht: Weiblich
Verfasst Di 22.04.2008 14:03
Titel

Antworten mit Zitat Zum Seitenanfang

mhmm ja und wie macht man das? Bin jetz nicht sooo gut in php... Weiß nich wie ich das schreiben muss...
  View user's profile Private Nachricht senden
Snifferdog

Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht: Männlich
Verfasst Di 22.04.2008 14:10
Titel

Antworten mit Zitat Zum Seitenanfang

Naja du könntest einfach abfragen ob der, die, das Input in dem die Datei übergeben wird leer ist oder nicht und
falls das der Fall ist klammerst du den Teil mit der Datei halt aus ...

Also quasi:
Code:

if(!empty($_POST['datei'])){

// Teil mit der Datei

} else {

echo "Es wurde keine Datei übergeben.";

}



Müsstest du natürlich an deinen Code anpassen .. und dann solltes funktionieren *zwinker*

Gruß
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
denise2302
Threadersteller

Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht: Weiblich
Verfasst Di 22.04.2008 14:12
Titel

Antworten mit Zitat Zum Seitenanfang

Das Problem ist aber, dass da so viel von der Datei steht, also von dem Anhang ^^ Dadurch weiß ich nicht WO ich das dann hinschreiben muss....

LG Denise
  View user's profile Private Nachricht senden
Snifferdog

Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht: Männlich
Verfasst Di 22.04.2008 14:26
Titel

Antworten mit Zitat Zum Seitenanfang

Also wenn ich das richtig erkenne müsste es sich um den Teil hier handeln:

Code:

      $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--";


Angepasst wärs also:

Code:


if(!empty($_POST['datei'])){

      $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.";
}



Ungetestet aber sollte gehen *zwinker*

PS: Habe eben im Nebenthread einen interessanten Link gepostet von Sahnemuh gefunden zur Sicherheit bei solchen Formularen im Bezug auf Spam.. evtl ist der auch für dich hilfreich *zwinker*
-> http://www.drweb.de/webmaster/kontakt-formulare.shtml

Gruß
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
denise2302
Threadersteller

Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht: Weiblich
Verfasst Di 22.04.2008 14:44
Titel

Antworten mit Zitat Zum Seitenanfang

Dankeschön für die Antwort, es funktioniert, bloß wird jetzt mein Text nicht mehr ausgelesen, also Dankeschön und so weiter ^^ Aber ich denke das bekomm ich schon noch hin irgendwie.

Und wegen dem Link, ich werdes mir mal anschaun, weiß schon, dass mein Formular noch sehr unsicher ist... kommt noch *Thumbs up!*

Dankeschön für eure Hilfe!

Liebe Grüße Denise


Edit:

aber muss es nicht eigentlich genau andersrum?
-> if keine Datei dann wurde keine übergeben else das andere??

Mhmmm aber trotzdem wird irgendwie der Text nicht ausgegeben.....?? *hu hu huu*
Und bis jetz kam auch noch keine Mail an bei mir....


Zuletzt bearbeitet von denise2302 am Di 22.04.2008 14:51, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
denise2302
Threadersteller

Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht: Weiblich
Verfasst Di 22.04.2008 15:07
Titel

Antworten mit Zitat Zum Seitenanfang

Sorry für Doppelpost aber ist wichtig.

Also so wie du es geschrieben hast ist es richtig, sorry!

Das der Text nicht mehr ausgegeben wurde und die Mail nicht gesendet wurde, lag an mir...

Ich möchte das die Felder überprüft werden ob sie leer sind, und habe mehrere if-Anfragen gestartet, das klappt so weit bloß geht es halt

Code:

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";
        .....


Wie mach ich das, damit es funktioniert, also das meine Mail dann auch geschickt wird?
  View user's profile Private Nachricht senden
 
Ähnliche Themen Formailer
formailer per php funktioniert nicht
PHP Mailer mit Dateianhang
PHP mit Dateianhang problem
Fehler?: XHTML 1.1 erzeugt Abstand nach Bild in Tabelle
Bild auf Webseite per Drag&Drop mit lokalem Bild ersetzen?
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.