sowas gibt es vermutlich nicht fertig, muss man halt selbst etwas basteln. da könnte man eine datenbank-tabelle benutzen, die als attribute login, passwort und ein bitfeld à la 'hasDownloaded' enthält. ein login-formular übergibt beide werte an das hauptscript, dass zunächst l/p prüft. beim ersten zugriff wird dann' hasDownloaded' auf True (1, 'Y' oder äquivalent) gesetzt und die datei vom script "durchgereicht", bei den folgenden zugriffen wird eine fehlermeldung präsentiert, weil das 'hasDownloaded'-flag gesetzt sein sollte.
alles klar?
code-schätzung: 10-20 zeilen (ohne XHTML) mit den richtigen libs.