Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Download sicher über php zulassen





Frage

Hallo ich würde gerne Downloads anbieten das problem ist das ich jedem user nicht "verraten" will wo die datei bei mir auf dem server liegt dann kann ich gleichzeitig mitzählen wie oft eine datei runtergeladen wurde ( bzw wie oft jemand angefangen hat die runterzuladen ) kann mir da einer ein paar tips geben ? danke thomas

Antwort 1 von Nessus

Hi,

Du legst die Datei in ein Verzeichnis außerhalb des Dokument_roots. ein kleines Downloadscript kopiert es dann in ein öffentliches Verzeichnis (Befehl: system()). Vorher wird in einer Tabelle der Name eingetragen, bzw. in einem Textfile der Name Hinterlegt und der Zählerstnd um 1 erhöht.
Mit einem kleinen Eintrag in die Crontab kannst Du das kopierte File dann wieder löschen.
Es ist nur eine Möglichkeit, die Funktioniert allerdings. Allerdings, viele Wege führen nach Rom.

HTH

Nessus

Antwort 2 von ThomasOOP

:-)

hab ich erwähnt das ich M$'s OS benutze :-)

ausserdem ist dein aufgeführter weg gerade der den ich nicht wollte
wann wurde das file komplett runtergeladen ? d.h. wann kann ichs löschen ? den zeitpunkt zu bestimmen übersteigt meinen skill

habe überlegt das ich das vieleicht über die access datei des apaches mache

man meldet sich an, hat zugriff auf ein Dir, kann runterladen, fertig

*grübel*

wenn sonst noch einer ne idee hat ?

dank dir aber nessus

Antwort 3 von Nessus

Hi,

ein Schutz über die .htaccess ist ein Verzeichnisschutz, kein Fileschutz.
Du kannst auch hingehen und beim Aufruf des Directorys den Timestamp der vorhandenen Datei auszulesen und wenn ein Verfallszeit von beispielsweise 60min aufgetreten ist, diese einfach vor dem Verzeichnislisting löschen.
Dadurch ist definitiv beim Aufruf der DAtei immer nur genau die benötigte Datei vorhanden.
Wie es unter Windows mit der .htaccess aussieht, kann ich leider nicht sagen, da ich das noch nicht verbrochen habe.

Nessus

Antwort 4 von semi

.htaccess funktioniert unter Windows auch gut.
Du kannst die Dateien in einem Unterverzeichnis speichern und dort eine htaccess Datei mit folgendem Inhalt ablegen

<Limit GET POST>
  order deny,allow
  deny from all
</Limit>

Den Zugriff auf die Dateien erlaubst Du dann nur über ein PHP-Skript.
Jede Datei bekommt dabei irgendeine ID.
z.B.

http://....../download.php?id=dl0001

Die Id's, die dazugehörigen Dateinamen und Downloadzähler kannst Du in einer Datenbanktabelle speichern.

Das Skript könnte ungefähr so aussehen:
<?php
function id2filename($id)
{
  // TODO: Statt des Arrays hier ein DB-Zugriff
  $files = array (
    "dl001" => "prg_v1.zip",
    "dl002" => "prg_v2.zip",
    "dl003" => "prg_v3.zip"
  );
  return (isset($files[$id]))?$files[$id]:false;
}

function zaehlerInkrementieren($id)
{
  // TODO: Zähler in der DB inkrementieren
}

if(!isset($id) || !($file=id2filename($id)))
{
  Header("Status: 404 Not Found");
  exit();
}

$dir = "./files";
Header('Content-Type: application/force-download');
Header("Content-Transfer-Encoding: binary");
Header("File-Length: " . filesize("$dir/$file"));
Header("Content-Disposition: attachment;filename=$file");
Header("Cache-Control: no-store, no-cache, must-revalidate");
Header("Pragma: no-cache\n");
readfile("$dir/$file");
?>

Gruß,
Michael

Antwort 5 von Nessus

Hi,

schaue Dir das mal an:
http://www.tutorials.de/tutorials25850.html

Nessus

Antwort 6 von ThomasOOP

Danke ihr beiden, wirklich sehr gute Tips/Anregungen.

Werds direkt mal testen.



Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: