php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.04.2008, 12:46  
Erfahrener Benutzer
 
Benutzerbild von pixelprinzessin
 
Registriert seit: 23.04.2008
Beiträge: 270
PHP-Kenntnisse:
Anfänger
pixelprinzessin befindet sich auf einem aufstrebenden Ast
Standard Warning: fread(): supplied argument is not a valid stream resource...

Hallo! Habe es eigentlich schon in dem anderen Thread geschrieben, aber es ist ja jetzt ein neues Problem, und ich weiß echt nicht wie ich das lösen soll...??

Ich hab ja ein Formular mit Dateianhängen, und
da ist eine Zeile: $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);

Und wenn ich jetzt keine Datei anhänge kommt die Fehlermeldung:

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

Hier mein Code:

PHP-Code:
<?php

$Empfaenger 
"...";

if(
$_REQUEST['senden'])
{    
    if (
$_POST['email_address'] !== '') {
    exit(
'<h1>Es ist ein Fehler aufgetreten!</h1>Sie haben ein Feld ausgefüllt, das nicht ausgefüllt weden darf.');
    }
  else {    
    
$fehler = array();
    if(empty(
$_REQUEST['stueck']))
            {
            
$fehler['stueck'] = "Bitte geben Sie eine Stückzahl an!";
            }
    if(empty(
$_REQUEST['farbe']))
            {
            
$fehler['farbe'] = "Bitte geben Sie eine Farbe an!";
            }
    if(empty(
$_REQUEST['name']))
            {
        
$fehler['name'] = "Bitte geben Sie Ihren Namen an!";
            }
    if(empty(
$_REQUEST['email']))
            {
            
$fehler['email'] = "Bitte geben Sie Ihre E-Mail Adresse an!";
            }
    if(empty(
$_REQUEST['strasse']) || empty($_REQUEST['plzort']))
            {
            
$fehler['strasse'] = "Bitte geben Sie Ihre gesamte Adresse an!";
            }                
    if(
count($fehler)>0){
            foreach (
$fehler as $msg){ 
            echo 
"<p align=\"center\">$msg";
            }
            echo 
"<br /><br /><b><a href=\"javascript:history.back();\">zurück</a></b></p>";
            }
    else
     {
        
$Mailbetreff "Bestellung";

        
$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";
        if(!empty(
$_POST['Anhang'])){
        
$Header .= "Datei: \n";
          
$Header .= "Es wurde keine Datei übergeben.";
        } 
        else {
        
$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
{
?>
Dazu muss ich noch erwähnen, dass ich vorher nur eine Fehlermeldung hatte wo darin stand "Sie haben ein oder mehrere Pflichtfelder nicht ausgefüllt". Ich wollte aber, dass dasteht was man nicht ausgefüllt hat. Aber bevor ich das geändert hatte gings....
Entdeckt vll jemand von euch einen Fehler?

LG Denise
pixelprinzessin ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.04.2008, 12:55  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

was erwartest Du denn von fopen wenn Du keine Datei übergibst...
HPR1974 ist offline  
Alt 23.04.2008, 12:58  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

if(is_uploaded_file() ist dein Freund hier:

$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
HPR1974 ist offline  
Alt 23.04.2008, 12:58  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Erstmal der Teil, der Dich vermutlich nicht interessiert: Es wäre so viel einfacher, wenn Du eine fertige, funktionierende Email-Klasse nehmen würdest. Mir wurde neulich swiftmailer als Ersatz für phpmailer gezeigt und ich finde es bisher super.

Wenn sich fread() über das Filehandle beschwert, dann ist wohl fopen() fehlgeschlagen. Du kannst das eh einfacher mit file_get_contents() lösen.
Aber insgesamt solltest Du erstmal die Werte von $_FILES abtesten. Der Upload kann auch schief gehen.
PHP-Code:
if(empty($_REQUEST['strasse']) || empty($_REQUEST['plzort']))
{
    
$fehler['strasse'] = "Bitte geben Sie Ihre gesamte Adresse an!";


if (!isset(
$_FILES['Anhang']))
{
    
$fehler[] = 'kein upload';
}
else if(
$_FILES['Anhang']['error']!=0)
{
    
$fehler[] = 'Fehler beim Upload. #'.$_FILES['Anhang']['error'];
}
else if(!
is_readable($_FILES['Anhang']['tmp_name']))
{
    
$fehler[] = 'temporäre Datei kann nicht eingelesen werden';
}

if(
count($fehler)>0)
{
    foreach (
$fehler as $msg)
    { 
        echo 
"<p align=\"center\">$msg";
    }
    echo 
"<br /><br /><b><a href=\"javascript:history.back();\">zurück</a></b></p>";
}
else
{
    
$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 file_get_contents($_FILES['Anhang']['tmp_name']);
    
$Header .= chunk_split(base64_encode($Dateiinhalt));
    
$Header .= "\n";
    
$Header .= "--$Trenner--";

David ist offline  
Alt 23.04.2008, 13:54  
Erfahrener Benutzer
 
Benutzerbild von pixelprinzessin
 
Registriert seit: 23.04.2008
Beiträge: 270
PHP-Kenntnisse:
Anfänger
pixelprinzessin befindet sich auf einem aufstrebenden Ast
Standard

Waahh jetz seh ich garnich mehr durch ^^

@HPR: Das komische ist ja, es ging alles bevor ich nicht Code geändert hatte...
und deswegen ist ja die if else funktion da

PHP-Code:
if(!empty($_POST['Anhang'])){
        
$Header .= "Datei: \n";
          
$Header .= "Es wurde keine Datei übergeben.";
        } 
        else {
        
$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--";
        } 
Wenn der Anhang leer ist, wird keine Datei übergeben und wenn nicht dann kommt halt der Rest. Und so soll es ja auch sein, weil ja nicht alle ein Bild mitschicken... Ich weiß bloß nicht wo jetzt der Fehler ist... Weil es ja wie gesagt vorher ging bevor ich nicht die einzelnen Fehlermeldungen eingebaut habe... Versteht ihr wie ich das meine? ^^

LG Denise
pixelprinzessin ist offline  
Alt 23.04.2008, 14:10  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von pixelprinzessin Beitrag anzeigen
Waahh jetz seh ich garnich mehr durch ^^
Was passiert denn, wenn meine Änderungen eingebaut sind?
David ist offline  
Alt 23.04.2008, 14:18  
Erfahrener Benutzer
 
Benutzerbild von pixelprinzessin
 
Registriert seit: 23.04.2008
Beiträge: 270
PHP-Kenntnisse:
Anfänger
pixelprinzessin befindet sich auf einem aufstrebenden Ast
Standard

Dann schickt es garnichts ab. Wenn ich keine Datei auswähle, kommt dann eine Fehlermeldung. Aber eigentlich ist es ja kein Fehler, weil man muss ja nicht zwingend etwas hochladen.
pixelprinzessin ist offline  
Alt 23.04.2008, 14:21  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
if(!empty($_POST['Anhang'])){
Bist Du Dir sicher, dass es _POST['Anhang'] gibt, wenn _FILES['Anhang'] existiert? Schließt sich das nicht gegenseitig aus?
David ist offline  
Alt 23.04.2008, 14:33  
Erfahrener Benutzer
 
Benutzerbild von pixelprinzessin
 
Registriert seit: 23.04.2008
Beiträge: 270
PHP-Kenntnisse:
Anfänger
pixelprinzessin befindet sich auf einem aufstrebenden Ast
Standard

also das kam nicht von mir, dabei hatte mir jemand geholfen, weil ich den fehler schonmal hatte, und er damit behoben wurde, halt mit dem if else. Und nun ist er aber wieder da, seitdem ich die mehreren Fehlermeldungen mit eingebaut habe... das ist ja das komische...
pixelprinzessin ist offline  
Alt 23.04.2008, 14:39  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von David Beitrag anzeigen
Mir wurde neulich swiftmailer als Ersatz für phpmailer gezeigt und ich finde es bisher super.
Warum braucht man einen Ersatz? Was ist denn am phpmailer auszusetzen?
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] PHP -&gt; Ordner anlegen der sich auch beschreiben lässt?! Nightuser PHP Tipps 2008 13 30.06.2008 23:51
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource Zabimaru PHP Tipps 2008 7 02.04.2008 13:25
Warning: fwrite(): supplied argument is not a valid stream Venom PHP Tipps 2007 27 15.12.2005 18:14
mysql_result(): supplied argument is not a valid MySQL PHP Tipps 2005-2 4 25.08.2005 14:44
kleines problem mit fwrite Tic Rederon PHP Tipps 2005-2 6 23.08.2005 08:24
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] Warning: mysql_num_fields(): supplied argument is not a... Datenbanken 18 09.06.2005 21:03
ShowIt_V1.8.14 PHP Tipps 2005 1 23.03.2005 19:13
frage zum arbeiten mit dateien PHP Tipps 2005 21 01.03.2005 13:22
bannergenerator PHP Tipps 2005 7 03.02.2005 10:04
Warning: mysql_result(): supplied argument is not a valid My Soese Datenbanken 6 27.01.2005 09:47
php statt frames seppel15 PHP Tipps 2004-2 10 17.12.2004 20:00
Warning: mysql_num_rows(): supplied argument is not a valid PHP Tipps 2004 2 06.09.2004 21:26
Counter zeigt nach ca. 2-3 Stunden fehler an PHP Tipps 2004 2 26.08.2004 20:08
Warning: mysql_num_rows(): supplied argument is not a valid PHP Tipps 2004 1 15.06.2004 15:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fread(): supplied argument is not a valid stream resource, warning: fread(): supplied argument is not a valid stream resource, warning: fread(): supplied argument is not a valid stream resource in, fread(): supplied argument is n, warning: fread(): supplied argument is not a valid stream resource i, fread(): supplied argument is not a valid stream resource in, fread(): supplied argument is not a valid stream resourcefread(): supplied argument is not a valid stream resource, warning: fread(): supplied argument is not a valid stream resource in beheben, php $_files datei anhang file_get_contents chunk_split fehler, warning</b>: fread(): 4 is not a valid stream resource in, php fputs(): 106 is not a valid stream resource, fread(): supplied argument is not a valid stream resource i, warning: fread(): supplied argument is not a valid stream resource in mail mit anhang, rmail php fread, php warnings fread, fread(): supplied argument is not a valid stream resourc e, php warning: fread(): supplied argument is not a valid stream resource in, warning: fread(): 25 is not a valid stream resource

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum