создаем файл getfile.php:
<?php session_start(); if($_SESSION['authorization']!="authorization_executed") { @header('Location: http://сайт.ру'); exit; } switch($_GET['file']){ case 1: $filename="http://сайт.ру/file1.zip";break; case 2: $filename="http://сайт.ру/file2.zip";break; case 3: $filename="http://сайт.ру/file3.zip";break; default : $filename="File not found"; } function file_force_download($file) { $head_size = @get_headers($file); if(strpos($head_size[0], '200')) { if (ob_get_level()) { ob_end_clean(); } $size = str_replace("Content-Length: ", "", $head_size[6]); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . $size); ob_clean(); flush(); readfile($file); exit; } else { @header('Location: http://сайт.ру'); exit; } } file_force_download($filename);
в файле index.php (например) стартуем сессию, которую в дальнейшем будем проверять в начале getfile.php:
session_start(); $_SESSION['authorization']="authorization_executed";
и ссылки на скачивание делаем такого вида: /getfile.php?file=2 + так же модно переделать под свои нужды и вместо списка файлов указывать только их имена, а сами файлы положить где-то на сервере (предварительно в скрипте добавив информацию о пути от корня)