Код (PHP): <?php // Данные $ftphost = '127.0.0.1'; // Адрес FTP сервера $ftpport = '21'; // Порт FTP серверар $ftpuser = 'user'; // Пользователь FTP $ftppasswd = 'password'; // Его пароль // Папка, которую нужно выводить $folder = '/addons/sourcemod/logs'; // Первые буквы файлов, которые можно выводить $prepend = array( 'errors_', 'L', ); // Запрещенные файлы (файлы, в которых имеются такие буквы) $denyed = array( 'vip', 'txt' ); // Отключим ошибки =) error_reporting(0); /** * Системный класс приложения * @package Скрипт вывода файлов с FTP * @author Урих Александр <urichalex@mail.ru> * @link http://craft-soft.ru Команда разработчиков CraftSoft */ class System { private $ftphost; private $ftpport; private $ftpuser; private $ftppasswd; private $logfolder; private $res; /** * Параметры для подключения к FTP * @param string $ftphost Адрес FTP * @param string $ftpuser Логин пользователя FTP * @param string $ftppasswd Пароль * @param string $ftpport Порт * @param string $logfolder Папка, из которой брать файлы */ public function __construct($ftphost, $ftpuser, $ftppasswd, $ftpport, $logfolder) { $this->ftphost = $ftphost; $this->ftpuser = $ftpuser; $this->ftppasswd = $ftppasswd; $this->ftpport = $ftpport; $this->logfolder = $logfolder; $this->res = ftp_connect($this->ftphost, $this->ftpport); $login = ftp_login($this->res, $this->ftpuser, $this->ftppasswd); if(!$this->res || !$login) { $this->res = FALSE; } ftp_chdir($this->res, $this->logfolder); } public function __destruct() { ftp_close($this->res); } /** * Получение списка файлов * @param string $allowed Разрешенные префиксы * @return array Список файлов массивом */ public function getFiles($prepend, $denyed) { // Получим список файлов с FTP $files = $this->listFiles(); // Если файлы есть, возвращаем их if($files !== FALSE) { $return = array(); foreach($files as $file) { $file = basename($file); if($this->check($file, $prepend, TRUE) || $this->check($file, $denyed)) continue; $return[] = $file; } } return $return; } /** * Получение файла на скачивание * @param string $file Им файла */ public function getFile($file) { $content = file_get_contents( 'ftp://'.$this->ftpuser.':'.$this->ftppasswd.'@'.$this->ftphost.'/'.$this->logfolder.'/'.$file ); if(!$content) return FALSE; $this->sendFile($file, $content, 'application/download'); } private function check($string, $pattern, $prepend = FALSE) { if(empty($pattern)) return FALSE; if($prepend) { foreach($pattern as $p) { $pr = substr($string, 0, strlen($p)); if($pr === $p) return FALSE; } return TRUE; } else { foreach($pattern as $p) { if(strpos($string, $p) !== FALSE) return TRUE; } } return FALSE; } /** * Получение списка файлов с FTP * @return array Массив с фафлами */ private function listFiles() { return ftp_nlist($this->res, '.'); } /** * Отдает файл по содержимому * @param type $fileName Имя файла * @param type $content Содержимое файла * @param type $mimeType MINE тип файла */ private function sendFile($fileName,$content,$mimeType='text/plain') { $fileSize=(function_exists('mb_strlen') ? mb_strlen($content,'8bit') : strlen($content)); $contentStart=0; $contentEnd=$fileSize-1; $length=$contentEnd-$contentStart+1; header('HTTP/1.1 200 OK'); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Type: $mimeType"); header('Content-Length: '.$length); header("Content-Disposition: attachment; filename=\"$fileName\""); header('Content-Transfer-Encoding: binary'); $content=function_exists('mb_substr') ? mb_substr($content,$contentStart,$length) : substr($content,$contentStart,$length); echo $content; exit(); } } $data = new System($ftphost, $ftpuser, $ftppasswd, $ftpport, $folder); if(isset($_GET['file'])) $data->getFile($_GET['file']); ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8" /> <title>Скачать файлы</title> <style type="text/css"> table { width: 100% } td { padding: 7px; border: 1px solid #c1c1c1 } .container { width: 500px; margin: 20px auto 0 auto; } </style> </head> <body> <div class="container"> <h3>Скачать файлы</h3> <table> <?php foreach($data->getFiles($prepend, $denyed) as $file):?> <tr> <td> [url="?file=<?php echo $file?>"]<?php echo $file?>[/url] </td> </tr> <?php endforeach;?> </table> </div> </body> </html> Есть: FTP - 1 МАШИНА WEB - 2 МАШИНА (сам сайт на котором стоит php код который выше) CLIENT - 3 МАШИНА (клиент который должен скачивать файлы..) Здравствуйте, этот скрипт берет нужные файлы с FTP и транслирует их в html пользователю. Файлы получает и выводит на экран нормально, но не скачивается...(( Подскажите почему не скачивается и как можно это исправить? Проще говоря http://194.79.60.34/csgo_dem.php вот... PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]