phpbar.de logo

Mailinglisten-Archive

[php] security Download -->test3

[php] security Download -->test3

Juri Smarschevski php_(at)_phpcenter.de
Tue, 14 Aug 2001 12:51:11 +0200


> -----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