Ein paar Fragen zu file uploads

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

  • Ein paar Fragen zu file uploads

    hallo. also ich bin dabei, an einer seite zu arbeiten bei der man mehrere dateien hochläd.

    die seite hat also mehrere felder mit dem type="file" attribut. das formular hat natürlich den enctype="multipart/form-data"-teil.

    jetzt sollen unter jedem inputfeld je nach situation verschiedene fehlermeldungen erscheinen.
    dazu initialisiere ich erstmal ganz zu beginn der seite alle fehlermeldungen mit $meldung=""; etc.

    dann gibt es 3 verschiedene typen von fehlermeldungen
    a) Sie müssen eine Datei angeben
    b) Die angegebene Datei ist zu gross
    c) die datei ist kein bild

    in der php datei schreibe ich also erstmal if (isset(mein_submit_button)) {....
    sodele, dann schaue ich erstmal ob $_POST['name_von_input_feld_1'] existiert. wenn nicht, gibts $meldung = fall a);, falls doch erstelle ich mir erstmal einfachere namen damit ich später nicht immer $_FILES['name']['name/size/etc'] schreiben muss sondern nur z.B. $datei1_name/_tmpname/_size etc

    falls also meine $_POST.. bedingung wahr wird mache ich erstmal einen check ob die dateigröße und dateityp erfüllt sind. falls ja bleibt die $meldung leer, falls aber da was im argen ist, wird die fehlermeldung halt entsprechend gesetzt. soweit alles richtig ?

    jetzt kommen meine fragen
    wenn alle checks durchgelaufen sind, sollen die hochgeladenen dateien verschoben werden in ein spezielles unterverzeichnis, außedem soll der name der verschobenen dateien noch verändert werden, also z.B. die zeit drangehängt, damit es nicht zu überschneidungen kommt.

    Wenn ich das richtig gesehen habe, wird eine hochgeladene datei folgendermaßen verarbeitet:
    PHP-Code:
    $uploaddir '/var/www/uploads/';
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir $_FILES['userfile']['name']) 
    mir stellen sich jetzt da einige fragen:
    a) ist das so die sicherste methode ? muss ich evtl noch irgendetwas filtern damit man sich nicht "einhacken" kann ?
    b) muss das verzeichnis ($uploaddir) beschreibbar sein, also der CHMOD-Wert 755 (?) sein ?
    c) wie schaffe ich es, dass die datei z.B. originalname_time().originale_endung heisst ?
    d) gibt es eine möglichkeit das hochgeladene bild im anschluss auf 800x600 pixel zu resizen ? bzw es so zu resizen das es maximal 800 breit oder maximal 600 hoch ist (aspectratio beibehalten)
    e) jedes formular bezieht sich auf ein "event" auf der seite. jedes event hat seine eigene ID in der datenbank. weil ja mehrere dateien pro event hochgeladen werden, möchte ich die gerne in einem unterordner haben, d.h. ich möchte dass es einen unterordner namens 'id' (eben die ID-Nummer) gibt. würde die move_uploaded_file funktion mir automatisch diesen ordner (/var/www/uploads/'id'/dateiname.endung) anlegen wenn ich /var/www/uploads/ beschreibbar mache ?
    f) ich habe keine Ahnung wie ich ordner unter windows beschreibbar mache. ich benutze XAMPP, also apache 2
    g) wie bekommt man den absoluten pfad, also z.B "/var/www/uploads/" oder "C:\Programme\XAMPP\htdocs\" über php denn heraus ?

    MfG

  • #2
    Viele Fragen auf einmal, bei den meisten würde simples Ausprobieren oder ein Blick ins Manual reichen...
    a)
    bool move_uploaded_file ( string filename, string destination )

    Diese Funktion prüft, ob die mit filename bezeichnete Datei eine gültige Upload-Datei ist (d.h., dass sie mittels PHP's HTTP POST Upload-Mechanismus upgeloaded wurde).
    Ich wüsste nicht, dass man da noch was prüfen sollte, http://de.php.net/manual/de/features.file-upload.php sagt eigentlich alles

    b) Reicht bei mir nie, weil ich die Skripte nicht als root/Besitzer ausführe : 777?

    c) http://de.php.net/manual/de/function.strrchr.php, http://de.php.net/manual/de/function.substr.php etc.

    d) Forumsuche

    e) Probier mal aus, kann schon sein.

    f) Muss man das unters Windows? Hab da noch nie eine Möglichkeit zu gefunden..

    g) http://de.php.net/manual/de/reserved...riables.server

    Ich hoffe, das hilft dir erst einmal
    Zuletzt geändert von NilsV; 01.01.2006, 22:10.
    Wahrheit ist unser kostbarster Besitz. Lasst uns sparsam mit ihr umgehen. Mark Twain

    Kommentar


    • #3
      ich ergänze ein wenig:

      d) http://www.google.de/search?hl=de&q=php+resize+image
      e) nein, der ordner muss vorher angelegt werden.
      f) rechts anklicken > sicherheitseinstellungen (oder irgendsowas, letzter reiter). beim iis muss der benutzer IUSR_[irgendwas] entsprechende rechte haben. kann beim apache so ähnlich funktionieren.

      Kommentar


      • #4
        vielen dank schonmal
        es haben sich eigentlich alle Fragen gelöst. Gut dass es das PHP manual auch auf deutsch gibt .

        Kommentar


        • #5
          OffTopic:
          ich halte das für einen nachteil.

          Kommentar


          • #6
            OffTopic:
            ich auch. ich schätze zB die ganzen englischen kommentare. die helfen am meisten...
            2 meiner pages:

            Kommentar


            • #7
              bezüglich bildfunktionen von php: bisher habe ich eine funktionsweise die eigentlich funktioniertm aber das ergebnis gefällt mir nicht sehr gut, das Bild wirkt unscharf.

              gibt es bessere (qualitativ hochwertigere) methoden dafür ?

              meine jetzige methode ist:
              PHP-Code:
              $picsize=getimagesize("$sourcefile");
              $source_x  $picsize[0];
              $source_y  $picsize[1];
              $source_id imageCreateFromJPEG("$sourcefile");
              $target_id=imagecreatetruecolor($dest_x$dest_y);
              imagecopyresampled($target_id,$source_id0,0,0,0$dest_x,$dest_y$source_x,$source_y); 

              Kommentar


              • #8
                Imagemagick, sofern auf dem Server vorhanden, liefert teilweise wesentlich bessere Ergebnisse.

                Kommentar


                • #9
                  Bevor kommt "dieses Funktion gibt es nicht" oder so.

                  http://www.imagemagick.org/script/index.php

                  mfg - sagg

                  Kommentar


                  • #10
                    vielen dank

                    und jetzt mal wieder ne ganz andere frage.

                    wie mache ich z.B. das hier in PHP:
                    5^5 (5 hoch 5) ? denn "5^5" liefert "0" .. und das ist falsch

                    Kommentar


                    • #11
                      Mit pow();
                      mfg - sagg

                      Kommentar


                      • #12
                        vielen dank, hat funktioniert

                        jetzt wieder eine andere frage. ich habe schon durch google versucht, weiterzukommen, aber ich komme nicht voran.

                        es geht um regular expressions.

                        beim benutzernamen ($username) möchte ich nur spezielle zeichen verbieten, beim passwort möchte ich nur a-zA-Z0-9 erlauben.

                        ich weiss aber nicht wie ich das erste oder das zweite hinbekommen kann.
                        beim zweiten wahrscheinlich durch eregi("^[a-z0-9]$" ,$text) - funktioniert aber auch nicht


                        PS: das mit dem pasword hat sich bereits erledigt, es muss so aussehen:
                        eregi("^[a-z0-9]+$" ,$text)
                        Zuletzt geändert von NameZero912; 07.01.2006, 15:37.

                        Kommentar


                        • #13
                          Original geschrieben von chrpun
                          OffTopic:
                          ich auch. ich schätze zB die ganzen englischen kommentare. die helfen am meisten...
                          die sind auch in der deutschen Manual >_>

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar

                          Lädt...
                          X