phpbar.de logo

Mailinglisten-Archive

[php] security Download -->test3

[php] security Download -->test3

Juri Smarschevski php_(at)_phpcenter.de
Tue, 14 Aug 2001 17:09:04 +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 3:17 PM
> To: php_(at)_phpcenter.de
> Subject: Re[2]: [php] security Download -->test3
>
>
> Guten Tag ,
Hi Alexander,

> JS> 2. eine tabelle erstellen, wo pfade zu downloaddateien und FileID
> JS> (e.g als PrimaryKey) abgespeichert werden.
>
> in mysql..?
egal wo, koennte auch eine txt datei sein, nur den suchvorgang
muesstest Du dann selbst schreiben und der dauert dann demensprechend

>   hab dann in der secure "$cfgDbdwpfad"und "$cfgDbdwdat" als tabnamen
ich kenne die secure nicht

> deklariert die werden dann beim login des users
>
> if ( isset($userArray["$cfgDbUserLevelfield"]) &&
> !empty($cfgDbUserLevelfield) ) {
>                 $user = stripslashes($userArray["$cfgDbuserfield"]);
>                 $level_1 =
> stripslashes($userArray["$cfgDblevel_1_field"]);
>                 $FilePath = stripslashes($userArray["$cfgDbdwpfad"]);
>                 $Filename = stripslashes($userArray["$cfgDbdwdat"]);
>                 $FilePathAndName =
> getFilePath($HTTP_GET_VARS['$FilePath','$Filename'];

ne-ne, so geht's nicht ;-)
$HTTP_GET_VARS ist ein ganz normalles array, das Du so nicht
ansprechen kannst.

gehen wir davon aus, dass der user sich erfolgreich eingeloggt hat.
Dann (ganz grob):

file_download.php:
<br><br><H3>Download von Dateien</H3>
<?
if (! $UserOk ) die ("Permission denied");
// der User ist OK.
if (isset($HTTP_GET_VARS['fid'])) {	// der User fordert eine Datei an
// auslesen von notwendigen sachen aus db
// SELECT cfgDbdwpfad, cfgDbdwdat FROM MyTable
// WHERE MeineFileID=$HTTP_GET_VARS['fid'];
// ergebnisse in $FilePath und $FileName fetchen
// falls ergebnisse vorhanden sind liest Du praktisch mit dem "readfile"
// die Datei ein, und gibst die aus. dadurch dass ein enstprechender
// header davor ausgegeben wird, ist's ein zeichen fuer'n browser, dass
// er die datei gefaelligst zu downloaden hat.

if (! checkAll($FilePath.$FileName) ) die "Something wrong";
// download anstossen
header("Content-Type: application/octet-stream");
header("Content-Disposition: inline; filename=\"".$FileName."\"");
readfile($FilePath.$FileName);

}
else { // Downloads anbieten

// da muss man noch den GET-Parameter fuer User ID einfuehgen:
print '<a href="'.$PHP_SELF.'?fid=1234">Link zur Datei a.txt</a><br>
print '<a href="'.$PHP_SELF.'?fid=5678">Link zur Datei b.txt</a><br>
print '<a href="'.$PHP_SELF.'?fid=9101">Link zur Datei c.txt</a><br>
}

?>

Gruss,
Juri




php::bar PHP Wiki   -   Listenarchive