Wer findet den Fehler? ( IF Abfragen )

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wer findet den Fehler? ( IF Abfragen )

    hi ,

    ich suche nun schon seit ein paar stunden nach dem fehler, deswegen poste ich nun hier, vielleicht könnt ihr mir ja helfen?

    Also es geht um ein Formular, wo ich Daten eintragen kann und ein Bild hochladen kann, ab Zeile 38 prüfe ich die Bilddaten, ob sie übereinstimmen! Das Problem ist hier nun, wenn ich z.B. ein Bild mit Dateiendung .jpg auswähle, wird es trotzdem hochgeladen, obwohl nur gif dateien erlaubt sind! Er gibt den echo befehl zur der passende if abfrage auch aus, aber lädt das bild trotzdem hoch....! Was hab ich da falsch gemacht?

    wenn jemand einen fehler sieht, wäre das wirklich klasse! falls jemand durch den code nicht durchsteigt, fragt kurz nach! thx schon mal
    PHP-Code:
    <?   

    // Nur die Daten bearbeiten, weil keine neue Datei hochgeladen wurde, alte hochgeladene Datei beibehalten: 

    if($file_name == "")   

    $result = MYSQL_QUERY(" UPDATE $table SET   

    realname='$realname', 
    pass='$pass'                                                                                                                            

    WHERE ID='$ID' ");   

    if($result){   

    echo "Die Daten wurden erfolgreich geändert!";   

    }   
    else {   
        echo "Die Daten konnten nicht geändert werden, versuchen Sie es erneut!";   
    }   
    $result = MYSQL_QUERY(" SELECT * FROM $table WHERE ID='$ID' ");   
    WHILE($row = mysql_fetch_array($result)){   
    }   
    }   

    // Die neue Datei hochladen und Daten bearbeiten: 

    else   
    {   
    $ziel = "pictures/";   
    $datei_max = "800000";   
    $datei_endung = "image/gif";   
    $datei_format = "200";   
    $picture = "pictures/$file_name";   

    /* Bilddaten überprüfen: 

    HIER TRITT EIN FEHLER AUF: 
    Die if abfragen werden irgendwie ignoriert, er gibt zwar den echo Befehl aus, falls etwas nicht stimmt, aber lädt das Bild trotzdem hoch! 
    */   

    if($datei_max < $_FILES['file']['size'])   
    {   
    echo "Das ausgewählte Bild ist zu groß!";   
    }   
    elseif($datei_endung != $_FILES['file']['type'])   
    {   
    echo "Die ausgewählte Datei entspricht nicht den erlaubten Dateitypen!";   
    }   
    else   
    {   
    move_uploaded_file($_FILES['file']['tmp_name'],$ziel.$file_name);   
    }   

    // Daten bearbeiten: 

    $result = MYSQL_QUERY(" UPDATE $table SET    

    realname='$realname', 
    picture='$picture', 
    pass='$pass'                                                                                               
                                                      
    WHERE ID='$ID' ");   

    if($result)   

    {   
    echo "Die Daten wurden erfolgreich geändert!";   
    }   

    else   
    {   
    echo "Die Daten konnten nicht geändert werden, versuchen Sie es erneut!";   
    }   

    $result = MYSQL_QUERY(" SELECT * FROM $table WHERE ID='$ID' ");   
    WHILE($row = mysql_fetch_array($result)){   
    }   

    }   
    ?>
    Zuletzt geändert von Rondos; 09.06.2003, 02:33.

  • #2
    du sagst, obwohl er meckert, dass das falsche format ist, wird die datei hochgeladen, bzw. verschonen???

    Sollte eigentlich nicht so sein.

    Kommentar


    • #3
      ja es kommt z.B. die meldung "Die ausgewählte Datei entspricht nicht den erlaubten Dateitypen!", aber die datei wird trotzdem hochgeladen, ich versteh das net... stehe vor einem rätsel

      das bedeutet ja ein if fall ist true, warum tritt trotzdem noch der else fall in kraft?
      Zuletzt geändert von Rondos; 09.06.2003, 00:17.

      Kommentar


      • #4
        hochgeladen wird sie ja auf jeden fall. die frage ist, ob sie auch in das verzeichnis verschoben wird, was du in der move_uploaded_file() funktion angibst.

        Kommentar


        • #5
          ja sie wird in das verzeichnis ,,kopiert"

          Kommentar


          • #6
            im zweifelsfall schieb die schuld einfach auf PHP und sage dir selbst es ist nen bug

            hab auch so nen fehler. da wird in nem switch immer der default wert genommen. und ich habe an dem tag schon 2 tage gesessen. irgendwann habe ich es aufgegeben. hab es auch mit mehreren if-anweisungen probiert. immer der gleiche fehler. naja. wat solls.

            verrückterweise konnte ich schon so manches problem lösen indem ich alles einfach neu geschrieben habe. dabei hatte ich das vorherige file x mal auf sonderzeichen überprüft. aber es war alles vollkommen richtig.

            Kommentar


            • #7
              das stimmt. manchmal hilft es in der tat, das ding eben NEU zu schreiben. also nix mit copy&paste. einfach mal stück für stück was machen.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                hab ich schon gemacht und für mich ist das so korrekt, dann kann ich das net anders machen wüsste auch net wirklich wie ich das anders umsetzen kann

                Kommentar


                • #9
                  schaue mal bei den code-schnipseln vorbei und lasse dich inspirieren.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    so ich habs ^^ ich habe die variablen einfach gleich eingesetzt so geht es, er uploadet nur noch die dateien, die die vorgaben erfüllen!

                    so habe alles hinbekommen, ich würde nur noch gerne wissen, wie man die dateibreite/dateihöhe überprüfen kann?
                    Zuletzt geändert von Rondos; 09.06.2003, 02:48.

                    Kommentar


                    • #11
                      http://at.php.net/manual/de/function.getimagesize.php
                      PHP-Code:
                      $imagehw GetImageSize($newpic);
                      $imagewidth $imagehw[0];
                      $imageheight $imagehw[1]; 

                      Kommentar


                      • #12
                        kewl es funtzt alles so wie ich das wollte! ;D thx! ein kleines problem habe ich jedoch noch:

                        elseif("image/gif" != $_FILES['file']['type'] || "image/jpg" != $_FILES['file']['type'])
                        {
                        bla
                        }

                        mit der zeile möchte ich gif und jpg bilder erlauben, wenn ich das nur mit "image/gif" mache funktioniert es, aber sobald ich zwei dateitypen verbinde durch || geht es nicht mehr! seht ihr ein fehler?

                        Kommentar


                        • #13
                          Nimm mal und statt oder.

                          Kommentar


                          • #14
                            ändert leider nichts!

                            image/jpg alleine geht auch nicht, dann lädt er wieder nichts hoch, also liegts wohl an dieser angabe...

                            Zuletzt geändert von Rondos; 09.06.2003, 13:55.

                            Kommentar


                            • #15
                              hmpf ich kann einfach keine jpg dateien uploaden nur gif dateien, woran kann das liegen?

                              ich habe alles ausprobiert "image/jpg", "image/jpeg","image/pjpg" !

                              Kommentar

                              Lädt...
                              X