Schutz vor direktem Download einer Datei?

  • PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schutz vor direktem Download einer Datei?

    Hallo!
    Gibt es eine Möglichkeit, eine Datei vor direktem Datei-Download zu schützen?

    Beispiel:
    Download-Adresse ist
    DeineHomepage.de/Download.php?id=64355
    anstatt:
    DeineHomepage.de/files/Setup.exe

    Also das auch im Download-Manager nicht der richtige Dateipfad angezeigt wird?

    Vllt. so?:

    download.php

    PHP-Quellcode

    1. <?php
    2. If($_GET['id']==64355)
    3. {
    4. include("./files/Setup.exe");
    5. }
    6. ?>

    oder würde das nicht gehen?

    ___
    Gruss,
    maxinet
  • hi

    ungefähr hast du da recht.
    meistens sind die direkten links dann aba in einer Datenbank verwaltet.
    Jede id hat also einen direkten Link.

    Nun kannste ein SQL Query mit Hilfe des GET-Variablenwertes von id starten, welcher dir den direkten Link ausibt.

    Wie du diesen dann weiterverarbeiten kannst, dass der direkte Link auch automatisch zum Download beim CLienten verfügbar ist, dazu schaust dir folgende Referenz an:
    Header - php bar

    gruß
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Danke, bin jetzt so weit:

    PHP-Quellcode

    1. $url="otrkey/files/otr/";
    2. header("Content-type: application/OTRKEY-file");
    3. header("Accept-Ranges: bytes");
    4. header("Content-Transfer-Encoding: Binary");
    5. header("Content-Disposition: attachment; filename=".$_GET['file']);
    6. header("Content-length: " . filesize($url.$_GET['file']));
    7. readfile($url."/".$_GET['file'],"r");


    Nur wie kann ich da den genauen Download-Traffic ermitteln? - Also die geladenen Bytes. Wenn man den Download bspw. abbricht, entspricht der Traffic ja nicht der Dateigröße!

    Ich hatte da an sowas gedacht:

    PHP-Quellcode

    1. $url="otrkey/files/otr/";
    2. header("Content-type: application/OTRKEY-file");
    3. header("Accept-Ranges: bytes");
    4. header("Content-Transfer-Encoding: Binary");
    5. header("Content-Disposition: attachment; filename=".$_GET['file']);
    6. header("Content-length: " . filesize($url.$_GET['file']));
    7. $fp=fopen($url."/".$_GET['file'],"r");
    8. while(!fEof($fp))
    9. {
    10. $daten=fgets($fp,1024);
    11. $traffic=strlen($daten); //Traffic in bytes
    12. $traffic_gesamt=($traffic_gesamt+$traffic);
    13. echo $daten;
    14. }
    Alles anzeigen


    Nur dieses Script läd von der Datei nur die ersten 2,3 MB!
    Hat jemand eine Idee?

    Gruss, Maxi
  • Ich habe auch mal schnell was zusammengeschrieben und bei mir geht das mit einer 23,6 MB Datei:

    PHP-Quellcode

    1. <?
    2. $file = "file.zip";
    3. header("Content-type: application/octet-stream");
    4. header("Content-Disposition: attachment; filename=".$file);
    5. header("Content-length: ".filesize($file));
    6. $fp = fopen($file, "r");
    7. $traffic = 0;
    8. while(!feof($fp))
    9. {
    10. $daten = fgets($fp, 4096);
    11. $traffic += strlen($daten);
    12. echo $daten;
    13. }
    14. fclose($fp);
    15. ?>
    Alles anzeigen


    Vielleicht liegts an deiner php.ini Einstellung. Es kann sein dass du pro PHP Script maximal 2,6 MB RAM verwenden darfst.

    Allerdings ob du damit den WIRKLICHEN Traffic herausbekommst weiß ich nicht genau.

    Ich denke aber, PHP liest die Datei über den Dateizeiger aus und schickt diese einzeln an den Browser. Wenn jemand den Download z. B. bei 50% abbricht hat PHP wahrscheinlich schon die komplette Datei ausgelesen, so dass du die komplette Dateigröße als Traffic errechnet hast.

    Ist nur eine Vermutung ...
    "Ich spitt' zu gefährlich, um anderen Rappern Hoffnung zu geben, es geht, ich fing an ohne Talent und Plan und mittlerweile kennt jeder in Deutschland mein Namen!
    "http://www.freesoft-board.to/…links-machen-164135.html"