Mailinglisten-Archive |
> -----Original Message----- > From: php-admin_(at)_phpcenter.de [mailto:php-admin_(at)_phpcenter.de]On Behalf Of > Alexander Hessenkamp > Sent: Tuesday, August 14, 2001 11:41 AM > To: php_(at)_php-center.de > Subject: [php] security Download -->test3 > > > Hallo liste , Hi Alexander, > ich möchte auf einer internet-seite ein download zur verfügung > stellen..aber nur für registrierte User.. > das einloggen klappt schon (hab mir da das script securepage > installiert).. > nun soll Der User wenn er auf die Downloadseite ist gleich beim klick > die entsprechende datei runtergeladen können.. aber > nicht direkt nachvollziehbar sein wo sie liegt (also kein bookmark > austausch möglich sein..) > geht das überhaupt?.. ja, das geht, z.b. folgendermassen: 1. die downloaddateien liegen ausserhalb des webbereiches, damit der webserver (direkter download via http:) keinen zugriff darauf hat 2. eine tabelle erstellen, wo pfade zu downloaddateien und FileID (e.g als PrimaryKey) abgespeichert werden. 3. user login ok ? -> die download seite mit download links darstellen. jeder link zeigt dann auf eine datei plus FileID als GET Parameter (getfile.php?fid=12312312) und u.U. UserID, die nix anderes tut als den pfad (anhand der FileID) aus der tabelle ermittelt, saemtliche checks duerchfuehrt(ist die datei da, darf der user die downloaden etc.) und die datei zum downloaden anbietet. etwa so: if (! $UserOk ) die "Permission denied"; $FilePathAndName = getFilePath($HTTP_GET_VARS['fid']); // aus DB if (! checkAll($FilePathAndName) ) die "Something wrong"; // download anstossen header("Content-Type: application/octet-stream"); header("Content-Disposition: inline; filename=\"".basename(FilePathAndName)."\""); readfile($FilePathAndName); Gruss, Juri P.S. Mit dem header bin ich mir nicht sicher, kann sein dass es nur im IE oder nur im NS funkt. Es gibt aber genug header beispiele (manche sind ok manche nicht ;-) ) im archiv dieser liste.
php::bar PHP Wiki - Listenarchive