Цитата:
Повідомлення від maxi18
Кто-нибудь знает, как сделать временную линку в пхп?
(чтоб жила скажем час)
Тоесть на хосте есть файлик, его надо дать на выкачку, но так, чтобы никто не знал точно где он лежит.
|
PHP код:
<?php
if (@$f){
Header ( "Content-Type: application/octet-stream");
Header ( "Content-Length: ".filesize($f));
Header( "Content-Disposition: attachment; filename=$f");
readfile($f);
};
// Это должно приходить на скрипт из формы. Отсюда вырезать!
$file = "myfile.zip"; // файл, который надо скачать прилетает из HTTP запроса
$download = 'ok'; // разрешение на создание новой ссылки. Передается из HTTP запроса. например <input type=submit name=download value=Скачать>
// -------------------------------------- до сюда вырезать
$file_url = ""; // папка где находится файл, что-то типа $file_url = "../files/progs/";
$expires = "3600"; // сколько сeкунд будет жить ссылка
$expires = mktime (date("H"),date("i"), date("s")+$expires, date("m"), date("d"), date("Y"));
$now_date = mktime (date("H"),date("i"), date("s"), date("m"), date("d"), date("Y"));
$file = $file_url.$file;
$tmp_link = $file_url."tmp_".$file.".php";
$file_link = "<? \$file='$file'; \$expires = $expires; ?>";
if (!file_exists($tmp_link)||(@$download)){
$fp = fopen ($tmp_link, "w");
fputs($fp,$file_link);
fclose($fp);
} else {
@include ($tmp_link);
};
$d = @$expires - $now_date;
if ($d<0){
echo "Срок действия ссылки исчерпан!";
} else {
echo "<a href='?f=$file' target=new>Скачать!</a>";
};
if (@$del_tmp_link){unlink($del_tmp_link);}; // это если надо зачистить временные линки
?>
Если надо еще. Отдельно мона сделать скариптик, который зачищает уже отработанные временные ссылки, но это просто, сам разберешься.