RegEx bei Bildupload

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

  • RegEx bei Bildupload

    Hallo

    möchte Usern anbieten ihre Bilder ihrer Gesichtsfaschings hochzuladen.
    DAbei möchte ich jedoch nur erlauben,daß jpg Dateien hochgeladen werden dürfen.
    Mein Code funzt aber nicht:
    PHP-Code:
    $regexbild="/jpg/" ;
    if(!
    preg_match($regexbild,$_FILES['upload']['name'])) die("nur jpg erlaubt"); 
    hab auch schon andere Sachen probiert als regex definition...
    kann jemand helfen?
    Zuletzt geändert von kave78; 28.02.2005, 16:34.

  • #2
    Ich würde das mit str*() machen ... (BTW: Gibt es eine Funktion, die den Content-Type erkennt?)
    Bevor ich nicht in einem angemessenen Alter bin, werde ich keine Witze mehr über schmalle machen!
    - Zitat Berni

    Kommentar


    • #3
      Anmerkung:

      Das Bild wird nicht in der DB gespeichert, sondern nur der Name des Bildes.
      Also soll nur der Name gecheckt werden.

      Kommentar


      • #4
        Code:
        .?\.jp(?:e)?g
        So würde ich es machen. Was bedeuten die Slashes (/)?
        Bevor ich nicht in einem angemessenen Alter bin, werde ich keine Witze mehr über schmalle machen!
        - Zitat Berni

        Kommentar


        • #5
          http://www.php.net/getimagesize

          PHP-Code:
          $info getimagesize($_FILES['bild']['tmp_name']);
          $format $info[2]; 
          1 = gif
          2 = jpg
          3 = png

          Kommentar


          • #6
            MAGMAN

            auch keine schlechte Idee bei 2. Überlegung !!!......

            @FLOß

            danke habs gleich eingebaut und es funzt

            Kommentar


            • #7
              Original geschrieben von kave78
              MAGMAN


              mit deinem getimagesize biste hier echt falsch !!!......

              @FLOß

              danke habs gleich eingebaut und es funzt

              wieso bin ich hier falsch? du möchtest rausfinden ob das bild das ein user hochladen will ein .jpg bild ist oder nicht, um dann das hochladen zu erlauben oder wenn es ein anderes format ist zu verweigern, oder? und genau das kannst du mit getimagesize machen!

              also nicht dumm daher reden...

              Kommentar


              • #8
                Original geschrieben von kave78
                MAGMAN

                auch keine schlechte Idee bei 2. Überlegung !!!......

                @FLOß

                danke habs gleich eingebaut und es funzt
                na also, geht doch

                Kommentar


                • #9
                  Siehe oben drüber

                  Ich versuche gerade zu testen, was besser bzw sicherer ist.

                  Kommentar


                  • #10
                    @magman
                    das Problem mit getimagesize() ist, dass man dafür das Bild auf dem Server haben muss und soweit ich verstanden hatte sollte nur der Name in einer Datenbank gespeichert werden
                    Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

                    Kommentar


                    • #11
                      Original geschrieben von telmich
                      @magman
                      das Problem mit getimagesize() ist, dass man dafür das Bild auf dem Server haben muss und soweit ich verstanden hatte sollte nur der Name in einer Datenbank gespeichert werden
                      nicht ganz...
                      das bild ist eh temporär auf dem server sobald der user im formular eine datei auswählt und das formular absendet... und dann greift man mit getimagesize auf die temporäre datei zu! habe ich ja geschrieben
                      $info = getimagesize($_FILES['bild']['tmp_name']);
                      und nur wenn es dann eine .jpg ist wird weiter verfahren (copy, in datenbank,...)

                      Kommentar


                      • #12
                        gut, dass unsere webhoster viel power haben....

                        bin hier grad so vorbeigeschlittert und dachte, dass diese FUnktion ganz hilfreich sein könnte, die ich gestern geschrieben habe um IP-Adressen zu filtern. Ein wenig mit substr den string aufbereiten und so könnte man es auch für dateiendungen nutzen, ohne das bild nochmal einzulesen, auch wenns temporär vorhanden ist...

                        PHP-Code:
                        function check_blacklist($victim,$blacklist){
                            if(
                        is_array($blacklist) && !sizeof($blacklist)<&& is_string($victim) && !empty($victim))
                                if(
                        strstr(implode(" ",$blacklist),$victim))
                                    return 
                        true;
                                else
                                    return 
                        false;
                            else
                                die(
                        "Fehler");
                        }

                        $list = array("192.168.171.1",
                                      
                        "127.0.0.1",
                                      
                        "192.168.123.192");

                        $needle "192.168.171.1";

                        if(
                        check_blacklist($needle,$list)){
                            echo 
                        "Access denied!";
                            EXIT();

                        mfg

                        Kommentar


                        • #13
                          Man könnte auch die Endungen in ein Array reinspeichern, dann den String ab dem letzten Punkt nehmen und per in_array gucken obs das im Array gibt..
                          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                          var_dump(), print_r(), debug_backtrace und echo.
                          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                          Kommentar


                          • #14
                            @Shurakai, hall
                            Man könnte auch mit einem 5 Kilo Vorschlaghammer eine Stecknadel in eine Pinnwnad schlagen.
                            Ihr wisst schon, dass es darum ging nur zu überprüfen, ob eine Datei die Endung "jpg" hat. Da braucht man doch kein Array mit "den Endungen" also ["jpg"] machen...

                            Ich denke die RegExpr von FloB bzw. der Vorschlag von magman mit dem getsize() (@magman ja, ich habe es jetzt auch verstanden) sind schon einfacher. Wobei ich denke, dass der reguläre Ausdruck schneller ist als getsize().
                            Wer einen Weisen dumm fragt, wird eine kluge Antwort bekommen. Es ist nur die Frage, ob er sie auch versteht.

                            Kommentar


                            • #15
                              Wobei ich denke, dass der reguläre Ausdruck schneller ist als getsize().
                              nachts ist es kälter als draußen, oder?

                              mit nem regexp checkst du nur einen nichtsaussagenden teil eines dateinamens, während magmans tipp überprüft, ob es eine grafik ist.

                              Kommentar

                              Lädt...
                              X