[PHP5] Bilder Upload

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

  • [PHP5] Bilder Upload

    Hallöchen

    Ich bastle gerade für eine Communityseite an der Funktion, Bilder hochzuladen.

    Da sehr viele Eingaben für den Rest des Contents nötig sind, habe ich den ganzen Prozess in einzelne Schritte aufgeteilt.

    Schritt 2 ist eben besagter, Bilder hochzuladen.

    Da es keine Begrenzung gibt, die Bilder hochzuladen, hab ich eine Weile nach einer Möglichkeit versucht, immer neue Bilder hochzuladen und immernoch auf Schritt 2 der Seite zu bleiben.

    Gelöst habe ich das so:

    PHP-Code:
    elseif($_GET['step']=="2") {
            if(
    $_GET['upload']) {
                
    $extensions=array("jpg","jpeg");
                if(
    $_FILES['userfile']['tmp_name']<>'none'){
                    
    $file=$_FILES['userfile']['name'];
                    
    $temp=$_FILES['userfile']['tmp_name'];
                    if(
    filesize($temp)<="2097152") {
                        
    $path_parts=pathinfo($file);
                        if(
    in_array($path_parts["extension"], $extensions)) {
                            
    $filename=date("YmdHis").".".$path_parts["extension"];
                            
    copy($temp"images/content/".$filename);
                            
    $size=getimagesize($temp);
                            
    $width=$size[0];
                            
    $height=$size[1];
                            
    $pic_old=imagecreatefromjpeg($temp);
                            
    $pic_new=imagecreate(190,143);
                            
    imagecopyresized($pic_new,$pic_old,0,0,0,0,190,143,$width,$height);
                            
    imagejpeg($pic_new"images/content/thumbs/".$filename);
                            if(
    mysql_query("INSERT INTO iv_bilder VALUES('', '".$filename."', '".$_POST['userfile_text']."')")) {
                                
    $m="<b>Bild erfolgreich hochgeladen!</b>";
                            }
                            else {
                                
    $m="<b>Fehler beim Eintragen in die Datenbank</b>";
                            }
                        }
                        else {
                            
    $m="<b>Diese Dateiendung ist nicht erlaubt! Bitte nur .jpg und .jpeg verwenden!</b>";
                        }
                    }
                    else {
                        
    $m="<b>Das Bild ist zu groß! Maximale Dateigröße: 2 MB</b>";
                    }
                }
                else {
                    
    $m="<b>Keine Datei zum hochladen ausgewählt.</b>";
                }
                echo 
    $m."<br /><br />";
            }
            echo 
    '<form method="post" action="?page=artikel_neu&step=2&upload=1">
                <input type="hidden" name="header" value="'
    .$_POST['header'].'" />
                <input type="hidden" name="cat_big" value="'
    .$_POST['cat_big'].'" />
                <input type="hidden" name="cat_sub1" value="'
    .$_POST['cat_sub1'].'" />
                <input type="hidden" name="cat_sub2" value="'
    .$_POST['cat_sub2'].'" />
                <input type="hidden" name="cat_sub3" value="'
    .$_POST['cat_sub3'].'" />
                <input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
                <b>Schritt 2:</b> Bilder hochladen<br /><br />
                <b>Bild:</b> <input name="userfile" type="file" size="50" /><br />
                <b>Kommentar:</b><br />
                <textarea cols="20" rows="3" name="userfile_text"></textarea><br /><br />
                <input type="submit" value="Hochladen" class="form_button" />
                </form><br />
                <form method="post" action="?page=artikel_neu&step=3">
                <input type="hidden" name="header" value="'
    .$_POST['header'].'" />
                <input type="hidden" name="cat_big" value="'
    .$_POST['cat_big'].'" />
                <input type="hidden" name="cat_sub1" value="'
    .$_POST['cat_sub1'].'" />
                <input type="hidden" name="cat_sub2" value="'
    .$_POST['cat_sub2'].'" />
                <input type="hidden" name="cat_sub3" value="'
    .$_POST['cat_sub3'].'" />
                Wenn du mit dem Hochladen deiner Bilder fertig bist, klicke auf: <input type="submit" value="Weiter" class="form_button" />
                </form>'
    ;
        } 
    Allerdings funktioniert das Script nicht. Egal ob ich ein Bild zum hochladen auswähle oder nicht, er bringt mir jedes mal die Fehlermeldung, dass die Endung nicht erlaubt ist.

    Ich bin mit meinem Latein am Ende, keine Ahnung woran das liegen könnte.

    Bitte Hilfe
    This is what happens when an unstoppable force meets an immovable object.

  • #2
    tja - das wird wohl an der if-Bedingung liegen ?

    Was meinst Du ?

    Schon auf die Idee gekommen Dir den Inhalt von $extensions anzusehn ?

    Oder ein echo vor der if zu machen ?

    ------------

    noch besser, hier mal schauen wies gemacht wird:

    http://www.php-faq.de/q/q-formular-upload-php4.html

    $_FILES['xxxx']['type']

    Diese Variable enthält den MIME-Type der Datei, so wie er dem
    Server vom Browser übermittelt worden ist. Dieser Wert kann unter
    Umständen nicht richtig sein, je nach Einstellung des Browsers. Beim
    Ermitteln des Typs von hochgeladenen Grafiken sollte stattdessen
    die Funktion getimagesize() verwendet werden.
    Zuletzt geändert von Koala; 29.04.2007, 09:32.

    Kommentar


    • #3
      Hab schon alles mögliche ausgeben lassen...

      Das ist ja das seltsame daran, er gibt mir netmal irgendwelche Sachen aus (z.B.: $file oder $temp)...

      Einzige Möglichkeit wäre dann doch dass er die Datei garnicht erst erkennt oder?

      =(
      This is what happens when an unstoppable force meets an immovable object.

      Kommentar


      • #4
        Du willst sagen, wenn du "die('debug');" in die allererste Zeile deines Scripts schreibst, wird trotzdem nichts ausgegeben?

        Kommentar


        • #5
          Ne ich meine wenn ich nach

          PHP-Code:
          $file=$_FILES['userfile']['name'];
          $temp=$_FILES['userfile']['tmp_name']; 
          das eingebe:

          PHP-Code:
          echo $file;
          echo 
          $temp
          Zeigt er mir nichts an... also hat er die Datei doch nicht erkannt, oder lieg ich falsch?
          This is what happens when an unstoppable force meets an immovable object.

          Kommentar


          • #6
            Du hast davor schon einige Bedingungen .... Mach mal ein print_r ( $_FILES ); nach
            PHP-Code:
            elseif($_GET['step']=="2") { 
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              PHP-Code:
              Array () 
              Gibt er dann aus. Egal ob ich eine Datei ausgewähl habe und hochladen gedrückt habe oder nicht.

              Kann es vielleicht sein dass das Uploadgedöns in einer seperaten Datei sein muss oder so?
              This is what happens when an unstoppable force meets an immovable object.

              Kommentar


              • #8
                Hi,

                in Deinem Formular fehlt enctype="multipart/form-data".

                LG

                Kommentar


                • #9
                  Geht trotzdem nicht ... so langsam versteh ich das garnicht mehr
                  This is what happens when an unstoppable force meets an immovable object.

                  Kommentar


                  • #10
                    Wie/was hast du debugged?

                    Kommentar


                    • #11
                      Ähm... debugged? *gg*

                      Bis jetzt hat das Script immer funktioniert, auf einmal nicht mehr :/
                      This is what happens when an unstoppable force meets an immovable object.

                      Kommentar


                      • #12
                        Und dein erster Gedanke ist "muß ich im Forum fragen"?
                        Nimm das Heft erstmal selbst in die Hand, mache ein paar Testausgaben. Zum Beispiel print_r($_FILES) ganz zu Beginn des Scripts.

                        Kommentar


                        • #13
                          Ja das ist mein erster Gedanke, nachdem ich dieses Script schon zigmal verwendet habe und es bisher immer funktioniert hat...
                          This is what happens when an unstoppable force meets an immovable object.

                          Kommentar


                          • #14
                            dann zeig mal dein script online, wenn du weder debuggen noch das problem beschreiben kannst.

                            Kommentar


                            • #15
                              Hat sich nun doch erledigt, hatte "enctype="multipart/form-data"" in das falsche Formular eingesetzt.. jetzt klappt alles *gg*

                              danke für eure hilfe
                              This is what happens when an unstoppable force meets an immovable object.

                              Kommentar

                              Lädt...
                              X