Autor |
Nachricht |
denise2302
Threadersteller
Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht:
|
Verfasst Di 22.04.2008 13:30
Titel Formailer mit Dateianhang -> Fehler wenn kein Bild |
|
|
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
|
|
|
|
|
Skyw4lker
Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht:
|
Verfasst Di 22.04.2008 13:43
Titel
|
|
|
In dem Array 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
|
|
|
|
|
Anzeige
|
|
|
denise2302
Threadersteller
Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht:
|
Verfasst Di 22.04.2008 14:03
Titel
|
|
|
mhmm ja und wie macht man das? Bin jetz nicht sooo gut in php... Weiß nich wie ich das schreiben muss...
|
|
|
|
|
Snifferdog
Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht:
|
Verfasst Di 22.04.2008 14:10
Titel
|
|
|
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
Gruß
|
|
|
|
|
denise2302
Threadersteller
Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht:
|
Verfasst Di 22.04.2008 14:12
Titel
|
|
|
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
|
|
|
|
|
Snifferdog
Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht:
|
Verfasst Di 22.04.2008 14:26
Titel
|
|
|
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
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
-> http://www.drweb.de/webmaster/kontakt-formulare.shtml
Gruß
|
|
|
|
|
denise2302
Threadersteller
Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht:
|
Verfasst Di 22.04.2008 14:44
Titel
|
|
|
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
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.....??
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
|
|
|
|
|
denise2302
Threadersteller
Dabei seit: 12.09.2006
Ort: Leipzig
Alter: 34
Geschlecht:
|
Verfasst Di 22.04.2008 15:07
Titel
|
|
|
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?
|
|
|
|
|
|
|
|
Ä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?
|
|