PHP скачать файл


В данной статье рассмотрим как правильно скачать файл на PHP.

Под фразой PHP скачать файл я понимаю как суметь получить любой файл на скачивание со своего сайта.

Задача кажется простой, т.к. если указать ссылку на файл например с ".rar" или ".zip" расширением, то он будет скачиваться. Но что делать если файл имеет ".txt" или ".html" расширение? Нужно писать скрипт для отправки данного файла на скачивание.

Забегая вперёд я сразу покажу его код:

<?php
$file_name = trim(@$_GET['f']);
if ($file_name) {
    $file_name = $_SERVER['DOCUMENT_ROOT'].'/'.$file_name;  
    if (file_exists($file_name)) {
        ob_clean();
        if (preg_match("/MSIE/i",$_SERVER['HTTP_USER_AGENT']) && !preg_match("/Opera/i",$_SERVER['HTTP_USER_AGENT'])) {
        		header('Content-Disposition: inline; filename="' . $file_name . '"');
        		header('Expires: 0');
        		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        		header('Pragma: public');
        	} else {
        		header('Content-Disposition: attachment; filename="' . $file_name . '"');
        		header('Expires: 0');
        		header('Pragma: no-cache');
        	}
        header('Content-Length: ' . filesize($file_name));
        header('Content-Type: <MIME_TYPE>');
        readfile($file_name);
        exit;	
        }
        else
        {
        header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
        header('Status: 404 Not Found');  
        }
}
?>

Отправляя GET параметром "f" имя файла (вместе с полным путем до него) мы сразу получим запрос на сохранение файла либо сразу начнется его закачка. Это зависит от вашего браузера.

Для более корректной работы в недобраузерах семейства IE необходимо чтобы директива в php.ini - output_handler была пустой. Хотя по умолчанию она и без того пустая. Но на всякий случай можно создать в директории с файлом для закачки файл .htaccess со следующим содержанием:

php_value output_handler =

теперь загрузка будет проходить во всех браузерах корректно.

Имея такой файл на сервере, можно легко скачивать любые файлы с сайта, но с другой стороны - это огромная дыра для хакера, даже новичка. Конечно придется дописать его для проверки аутентификации посетителя.

Если данная статья "PHP скачать файл" вам чем-то помогла, поддержите работу блога кликнув по любой рекламе на странице.

 


Тэги:

Комментарии: 0

Прокомментировать »

 
 
 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика