|
Тема |
Download на файлове от логнат потребител |
|
Автор | 3opo (Нерегистриран) | |
Публикувано | 20.03.06 14:42 |
|
|
Здравейте имам следният проблем:
Имам файлове за Download, които са достъпни само след логин на потребител.
В момента файловете се извикват, като линк. С други думи, ако някой знае пътя до файла, не му е нужно да се логва, за да го запише.
Моля предложете ми как мога да реша този проблем.
За сега имам само следното решение:
<?php
$filename = 'html.html';
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch ($file_extension) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpe": case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "html": $ctype="text/html"; break;
case "htm": $ctype="text/html"; break;
default: $ctype="application/force-download";
}
if (!file_exists($filename)) {
die("NO FILE HERE");
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
@readfile("$filename") or die("File not found.");
?>
Това решение ме устройва само частично защото:
1. Файловете не се отварят директно в браузера, ами се появява прозорец за Download.
2. Все още съществува вероятност някой да налучка пътя до файла и да си го дръпне от сървъра
3. Нямам представа дали това решение работи с всички браузъри.
|
| |
|
|
|