Flash: Zugriff auf Files in passwgesch Verz OHNE standart Eingabedialog

Hallo,

ich hab folgendes Problem, zu dem mir bisher noch nie jemand eine antwort gegeben hat. Ich möchte folgendes verwirklichen:

Ein User muß sich erst auf einer PHP-Seite einloggen, dort gibt es einige Downloads, die NUR derjenige runterladen darf, der sich auch erfolgreich eingeloggt hat (PHP-Passwort ändert sich aber jede Stunde und wird nicht vom Benutzer selbst eingegeben, sondern "errechnet"). Die angegebenen Downloads sind .EXE-Dateien und diese liegen in einem mit .htaccess geschützten Verzeichnis.

Wie kann ich es erreichen, dass der auf der PHP-Seite eingeloggte User eine Datei aus dem gesicherten Verzeichnis herunterladen kann, OHNE dass er im typischen Passwort-Dialog, z.B. vom Internet Explorer User/Passwort angeben muß sondern die PHP-Seite diese Aufgabe übernimmt und er gar nicht erst den Dialog sieht, sondern direkt zum geschützten Filedownload kommt?

Kann ich vielleicht auch mit PHP bestimmen mit welchen user/pass -Angaben er sich authentifizieren soll um die Datei runterzuladen, also vereinfacht z.B. so:

(Verzeichnisuser und passwort und Username ist testuser/testpass)

$user = "testuser";
$pass = "testpass";
header("Content-Disposition: atachment; filename=$file");
header("Content-Type: application/octet-stream");
$fp=fopen("$filename","r");

(PHP übernimmt dann den Login in das Verzeichnis und startet den Download der Datei $file)

Schnelle Hilfe wäre super!

Alexander

  1. Hoi,

    Wie kann ich es erreichen, dass der auf der PHP-Seite eingeloggte
    User eine Datei aus dem gesicherten Verzeichnis herunterladen
    kann, OHNE dass er im typischen Passwort-Dialog, z.B. vom
    Internet Explorer User/Passwort angeben muß sondern die PHP-Seite
    diese Aufgabe übernimmt und er gar nicht erst den Dialog sieht,
    sondern direkt zum geschützten Filedownload kommt?

    Gar nicht. Das waere auch nicht sinnvoll. Du kannst nur das Script die
    Datei ausgeben lassen, also etwa so:

    Header("Content-Disposition: atachment; filename=$file");
    Header("Content-Type: application/octet-stream");

    $fd = fopen($filename,"r");
    while(!feof($fd)) {
      $bytes = fgets($fd,1024);

    if($bytes) {
        echo $bytes
      }
    }

    Gruesse,
     CK

    1. gibt es denn dann irgend eine andere möglichkeit sowas zu realisieren? cgi oder so? der download sollte

      1. versteckt sein,
      2. nicht direkt abrufbar sein z.B. www.ich.de/meinedatei.zip,
      3. keine eingabe von userdaten nötig (also z.B. den IE-logindialog), php-login kann durchaus drin sein.

      1. Hi,

        gibt es denn dann irgend eine andere möglichkeit sowas zu realisieren?
        cgi oder so? der download sollte

        Das _war_ CGI (genauer gesagt: Perl), was Christian Dir gegeben hat.
        PHP müßte aber dasselbe können.

        1. versteckt sein,

        Was genau verstehst Du darunter?

        1. nicht direkt abrufbar sein z.B. www.ich.de/meinedatei.zip,

        Das erfüllt Christians Lösung.

        1. keine eingabe von userdaten nötig (also z.B. den IE-logindialog),

        Dann darf es kein URL-Zugriff auf die Download-Datei sein (denn genau
        der wäre ja geschützt - das ist Deine Vorgabe!), sondern es muß etwas
        Anderes sein - also ein Dateizugriff, wie bereits von Christian vorgeführt.

        php-login kann durchaus drin sein.

        Was immer das sein mag (ich kenne kein PHP), ich vermute, das PHP-Skript
        hat diese Information irgendwo noch in Erinnerung (Parameter? Cookie?
        Environment-Variable), so daß das Download-Skript erkennen kann, ob es
        die Datei ausliefern darf oder nicht.

        Du solltest Dir dann allerdings Gedanken machen, was genau Dein Skript
        tun soll, wenn der Benutzer es unberechtigtweise aufgerufen hat.
        Du hast zahlreiche Möglichkeiten, von einer Weiterleitung zur PHP-Login-
        Seite bis zur stillschweigenden Fehlermeldung in irgend eine Protokoll-
        datei ...

        Viele Grüße
              Michael