Uploadscript anpassen: Richtiger Dateiname

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

  • Uploadscript anpassen: Richtiger Dateiname

    Hallo allerseits!

    Ich hoffe, ich mache mich hier nicht gleich unbeliebt, wenn ich den Ubernoob raushänge. Es geht um folgendes:

    Ich habe eine Lizenz für ein Upload- Script, womit ich eine ganz kleine Filehostingseite (koolfiles.com) betreibe.


    An dem Script stört mich, dass die Files einen Zufallsnamen erhalten und ich möchte dies gerne anpassen. Und hier beginnt mein Problem: Wie gesagt, habe ich dieses Script gekauft, ich selbst habe KEINE Ahnung von PHP, nix, nada, niente...


    Ist es wohl möglich, das Script anzupassen mit wenigen Zeilen und Eurer Hilfe? Oder muss ich da jemanden anstellen?


    Die folgende Codestelle scheint für mein ungeübtes Auge interessant zu sein:


    Code:
    // Zufallsdateiname erzeugen
    $rand_value = randomstring($File);
    $newfilenamekompl = "$rand_value.$endung";
    $savename = $picpfad.$newfilenamekompl;
    
    // hochgeladene Daeien speichern
    if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
    Das ganze Script darf ich leider wohl nicht posten (Copyright). Kann man da nicht irgendwo was ändern, dass der Filename des Originals genommen wird?

    Sorry, wie gesagt, ich bin wirklich VÖLLIG planlos...

  • #2
    Re: Uploadscript anpassen: Richtiger Dateiname

    move_uploaded_file ist die Funktion, die die Datei aus dem Temp-Verzeichnis ins Zielverzeichnis schiebt - unter dem neuen Namen, der im zweiten Parameter angegeben wird.

    Und dann schaust du dir noch mal $_FILES mit print_r() an - dann solltest du auch wissen, welcher Wert dich interessiert.

    Btw: Da der "Original"-Name vom Client übermittelt wird, ist er natürlich nicht vertrauenswürdig, und entsprechend zu überprüfen (nicht, dass man z.b. durch Übermitlung von ../ in ein höheres Verzeichnis wechseln könnte ...)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      PHP-Code:
      $savename $_FILES['UPFILE']['name']; 
      vor die zeile mit move_uploaded_file

      Was machst du, wenn ich eine Datei hochlade, die du schonmal hochgeladen hast?
      Dann gibt's nämlich nicht mehr zwei unterschiedliche Dateien, sondern nur noch eine (der Name ist ja gleich).

      Ist das Skript nicht so konzipiert, dass der tatsächliche Name irgendwo gespeichert wird?
      Was wird dir als Dateiname vorgeschlagen, wenn du eine Datei downloaden willst?
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Re: Re: Uploadscript anpassen: Richtiger Dateiname

        [i]Da der "Original"-Name vom Client übermittelt wird, ist er natürlich nicht vertrauenswürdig, und entsprechend zu überprüfen (nicht, dass man z.b. durch Übermitlung von ../ in ein höheres Verzeichnis wechseln könnte ...) [/B]
        Weiter oben im Script findet sich folgende Stelle:

        Code:
        // Zeichenfilter
        $File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');
        Ist das Problem damit erledigt??



        $savename = $_FILES['UPFILE']['name'];

        vor die zeile mit move_uploaded_file

        Was machst du, wenn ich eine Datei hochlade, die du schonmal hochgeladen hast?
        Dann gibt's nämlich nicht mehr zwei unterschiedliche Dateien, sondern nur noch eine (der Name ist ja gleich).

        Ist das Skript nicht so konzipiert, dass der tatsächliche Name irgendwo gespeichert wird?
        Was wird dir als Dateiname vorgeschlagen, wenn du eine Datei downloaden willst?

        Vorgeschlagen werden Namen wie z.B.00287b5dabc81c9521f1d585b.mp3 und der tatsächliche Name geht scheinbar verloren, jedenfalls funktioniert das Script ohne Datenbank und so weiter.

        Wenn ich Dich richtig verstehe, dann ist mein Problem gelöst mit Deinem Code...
        Nur gbt es nun das Problem, dass Dateien überschrieben werden. Wie könnte ich wohl einen einfachen Test einfügen, um dies zu verhindern?

        Kommentar


        • #5
          Hiermit?
          file_exists()

          Kommentar


          • #6
            Juhu! Ich hab es geschafft, dass der Filename des Originals verwendet wird. Danke mrhappiness, musste zwar noch etwas basteln, jetzt geht's aber...



            Nun habe ich aber tatsächlich das Problem, dass man Files überschreiben kann. Basierend auf pregos Link habe ich folgendes gebastelt:

            PHP-Code:
            // Schutz vor Überschreiben
            $testname '/$picpfad/$File';

            if (
            file_exists($testname)) {
            switch(
            $_FILES['UPFILE']['error'][$i]) {
                case 
            0:
                break;
                case 
            1:
                
            fehlerausgabe("Die Datei ist zu gross");
                continue 
            2;
                break;
                case 
            2:
                
            fehlerausgabe("Die Dateigröße  übersteigt
            das erlaubte Limit von 
            $max_upl_size KB");
                continue 
            2;
                break;
            } else {
            continue;


            Bitte nicht lachen, wie gesagt, ich hab KEINE Ahnung von Tuten und Blasen!


            Der Code hab ich aus dem Beispiel von pregos Link und dem Teil meines Scriptes, welcher die Dateigrösse überprüft, zusammengebastelt.

            Problem:
            Parse error: parse error, unexpected T_ELSE in /var/www/vhosts/koolfiles.com/httpdocs/test/index.php on line 106


            Könnte mir vielleicht jemand weiterhelfen, bzw. meinen Code korrigieren?

            Würd halt echt helfen, wenn man wenigstens ein Bisschen Ahnung hat von einer Programmiersprache
            Zuletzt geändert von Tronk; 13.03.2006, 22:50.

            Kommentar


            • #7
              Könnte mir vielleicht jemand weiterhelfen, bzw. meinen Code korrigieren?
              sieh erst mal zu, dass du den code umbrichst, damit man nicht scrollen muss.

              ansonsten - zähle die öffnenden und schließenden geschweiften klammern. am besten laut, in anwesenheit einer anderen person, die dich dabei kontrolliert.

              was soll die if-abfrage eigentlich für einen sinn erfüllen? in dieser form sehe ich keinen.

              Kommentar


              • #8
                Original geschrieben von penizillin
                sieh erst mal zu, dass du den code umbrichst, damit man nicht scrollen muss.

                ansonsten - zähle die öffnenden und schließenden geschweiften klammern. am besten laut, in anwesenheit einer anderen person, die dich dabei kontrolliert.

                was soll die if-abfrage eigentlich für einen sinn erfüllen? in dieser form sehe ich keinen.

                Den Zeilenumbruch habe ich gemacht, sorry dafür...

                Das mit den Klammern ist mir schon auch klar. Nur weiss ich nicht, wo die zu setzen sind. Und den Code habe ich ja einfach von woanders kopiert.

                Die if- Abfrage dient wohl dazu, dass der Fehler nur ausgegeben wird, wenn das File wirklich schon existiert?


                Wie gesagt: Keine Ahnung, aber so sieht die Konstruktion bei zu grossen Files aus, die funktioniert...

                Kommentar


                • #9
                  richtig ist:
                  Code:
                  if (bedingung)
                  {
                     ...
                  }
                  wobei "..." nur ausgeführt wird, wenn die bedingung erfüllt wird.
                  nun überlege selbst - was willst du von der bedingung "datei existiert" abhängig machen? richtig, dein switch-konstrukt durchgehen. also?

                  Kommentar


                  • #10
                    Original geschrieben von Tronk
                    ... Und den Code habe ich ja einfach von woanders kopiert.

                    Waaaaaaaaaaaahhhh!!!!

                    Bitte frag erst wieder was, wenn du zumindest weißt was du vorhast - hier wird dir jeder helfen, versprochen. Aber nicht wenn du einfach nur Code irgendwo her kopierst und dann fragst warum das nicht funktioniert. Wenn du jemanden brauchst der dir deinen Kram codet dann such dir nen Programmierer.
                    In diesem Forum gibt es Hilfe zur Selbsthilfe!!!

                    Kommentar


                    • #11
                      lol, ganz relaxt bleiben... Ist mir auch klar, dass es schwierig wird, was auf die Beine zu stellen, wovon man keine Ahnung hat...

                      Siehe mein erstes Posting: "Ist es wohl möglich, das Script anzupassen mit wenigen Zeilen und Eurer Hilfe? Oder muss ich da jemanden anstellen?"

                      Was ich VORHABE, das weiss ich aber, habe ich ja oben auch genau beschrieben, oder?

                      Hätte ja sein können, dass es mit Copy&Paste funktioniert. Hat es ja immerhin auch teilweise, denn dass der richtige Name genommen wird, das geht jetzt ja...


                      Nicht schlagen, bitte!!

                      Kommentar

                      Lädt...
                      X