• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Einen Datei downloaden, aber nur mit Passwort

Oder du legst eine 2te Seite an (PHP) und prüfst die Session, ob der User eingeloggt ist. Wenn ja, dann generierst du einen Ordner für den User, kopierst die Datei da rein und leitest den User auf den entstandenen Link weiter. Nach 10 Minuten der so löschst du dann das komplette Verzeichnis. Besser wäre es aber, wenn du das ganze mit ModRewrite machst, da du damit die Datei nicht kopieren oder löschen musst... Aber .htaccess dürfte hier völlig ausreichen ^^
 
Das wäre wie bei RapidShare so. Mich würde das auch interessieren, hättet ihr da einen Lösungsweg? Ich habe mich bereits selbst daran versucht, bin aber gescheitert. In der Logik ging das so:
Verweise alle Benutzer, die versuchen diese Datei downzuloaden, auf diese Seite.
Dummerweise kam ich dann selbst auch nicht an die Datei (ich im Sinne von Website), da die Anforderung schon wieder umgeleitet wurde.
Ich muss dazu sagen, dass ich kein mod_rewrite-Experte bin... ;)
 
Ich auch nicht, aber das funktioniert inetwa so:

Du legst für jeden User, der auf eine Datei zugreifen will, eine beliebige Zahl (z.B. 12345678) oder einen Code (z.B. ays94gb2s) in der Datenbank ab. Die Zahl/der Code ist an die Datei gebunden. Im Mod-Rewrite musst du die erste Variable als User-Code definieren, die zweite Variable als Dateiname. Dann prüfst du, ob der User-Code mit diesem Dateinamen in der Datenbank liegt und ob der User-Code zu dem User gehört, der ihn benutzt. Wenn das alles 'wahr' ist, dann gibst du ihm die Datei zum Download frei.
 
das macht man anders, du kannst die file via file_get_contents oder file laden und einfach schreiben, setze vorher den richtigen head. nichts in ordner kopieren oder sonstwas ^^
 
Hab ich aber auch schon probiert... Es hapert an der richtigen RewriteRule. Denn alle Anfragen gehen ja durch selbige. Wie gesagt, ich bin kein Experte was mod_rewrite betrifft. Ich denke, man müsste einen referer übergeben bei der Anfrage, falls dies nicht schon geschieht, und mittels der RewriteCond diese Regel außer Kraft setzen...
 
Ein Referrer wird vom Browser des Besuchers immer übergeben, außer er schaltet dies ab. Das machen jedoch einige aus Datenschutzgründen, weshalb ich mich nie auf den Referrer verlassen sollte.

Wie sieht denn dein bisheriger mod_rewrite-Versuch aus?
 
Hier ein kleines Beispiel:

.htaccess-Datei mit mod_rewrite (kopiert aus dem Zend Framework):

Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Leitet alle Aufrufe von nicht existierenden URLs auf eine index.php um.

Dort könnte dann beispielsweise stehen:

PHP:
<?php

$baseUrl = ''; // Setzen, falls Anwendung nicht im obersten Verzeichnis der
               // Domain liegt. Also etwa bei http://example.com/myapp/ hier
               // "/myapp" eintragen.
$path    = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

$path = substr($path, strlen($baseUrl));

switch (true) {
    case ($path === '/'):
        echo 'Index page';
        break;
    
    case (1 === preg_match('#^/file-download/.+$#', $path)):
        fileDownload($path);
        break;

    default:
        echo 'Not mapped';
        break;
}



function fileDownload($path)
{
    $parts = explode('/', $path, 3);

    if (isset($_SESSION['user_id'])) { /* oder ähnliche Prüfung */
        // startDownload($parts[2]);
    } else {
        echo 'Not logged in. Trying to download: ' . $parts[2];
    }
}

Aufruf: [noparse]http://example.com/file-download/x/y.zip[/noparse]

Ein Downloadscript mit Speed Limit, von dem ich weiß, dass es halbwegs zuverlässig funktioniert (hat(te) jemand auf einer Video-Hosting-Seite im Einsatz):

- PHP File download with speed limit
 
  1. Danke an mermshaus, ich werde den Code demnächst mal ausprobieren.
  2. Es ist mir schon klar, dass man sich nicht auf den Referer verlassen kann, deswegen sagte ich ja auch "übergeben". ;) Dachte da eventuell, dass man beim Anfordern der Datei etwas in den Header setzt. Aber da man den ja auch noch manipulieren kann... Alles nicht so einfach, das sehr gut zu sichern. x)
  3. Gerne würde ich den bisherigen Ansatz posten! Dummerweise hab ich den nicht mehr, weil das schon einige Zeit her ist. :D
 
Zurück
Oben