Скачать Текстовый Документ.txt

Скрипт скачивания различных документов с сервера Автор: Всеволод Чупрыгин Опубликовано: 27 скачать книга вадим зеланд трансерфинг реальности Май 2013 Недавно, для одного интернет-магазина на базе joomla-virtuemart , сделал скрипт, позволяющий на основе информации о товарах в базе данных генерировать каталоги товаров в виде XML документа с соблюдением формата Yandex Market Language (YML-формат каталога). Скрипт генерирует такие каталоги и сохраняет в файловой системе сайта. Но, клиент очень скоро пожаловался, что неудобно скачивать каталоги с сайта. И правда, при прямом обращении к каталогу, он просто открывается в браузере и чтобы его скачать нужно дополнительно нажать правой кнопкой мыши и кликнуть «сохранить как…». Действительно, для рядового пользователя интернета, это может быть довольно не удобно, и к тому же нужно еще додуматься, что можно кликнуть мышкой и скачать. Не для всех это кажется очевидным. Поэтому я решил написать коротенький скриптик, который по запросу позволял бы скачать текстовый файл с сервера, без открытия его в браузере. В этой статье я предлагаю листинг его кода с комментариями. if (isset($_GET['file']) and preg_match("/^Catalog[a-zA-Z0-9_]{0,50}\.xml$/",$_GET['file']) and file_exists($_GET['file'])) { $content = file_get_contents($_GET['file']); header('Content-Type: '.$ctype.'; charset=utf-8'); header("Content-Disposition: attachment; filename=".$_GET['file']); ob_end_clean(); ob_start(); echo $content; ob_end_flush(); exit(); } else { echo "Файл не найден."; exit(); } Принцип работы этого скрипта довольно прост. Допустим, скрипт записан в php файл с именем «download.php» и помещен в папку «files». Формируется ссылка на этот скрипт, в которой передается GET параметр file и в этом параметре передается имя требуемого текстового документа. Например, мы хотим скачать текстовый файл с именем test.xml или test.txt: http://www.domen-saita.ru/files/download.php?file=test.xml или http://www.domen-saita.ru/files/download.php?file=test.txt При этом, если файл найден в файловой системе, в браузере всплывает диалоговое окно сохранения документа на компьютер. Безопасность Однако, в такой организации скачивания документов с сервера таится одна серьезная опасность. Если я введу в адресной строке браузера такой запрос: http://www.domen-saita.ru/files/download.php?file=../configuration.php в таком случае начнется то, чего ни в коем случае допускать нельзя! Начнется скачивание файла конфигурации Вашего сайта (в данном случае имеется ввиду файл конфигурации решебник по геометрии 11 класс сборник задач мерзляк joomla, однако это в равной степени касается всех CMS). А это автоматически означает полный крах, потому что в таком случае в руки пользователю попадает вся жизненно важная информация связанная с работоспособностью сайта. И вопрос взлома – это уже вопрос ближайшего времени. Поэтому, чтобы предотвратить такую возможность, мы должны позаботиться о безопасности. Именно для этого в первой строке скрипта полученный запрос проходит проверку регулярным выражением. фланец стальной плоский приварной гост 12820 80 цена preg_match("/^Catalog[a-zA-Z0-9_]{0,50}\.xml$/",$_GET['file']) В данном случае, регулярное выражение допускает возможность скачивания только документа, имя которого может быть следующим: Catalog.xml Catalog_krovati.xml Catalog_shkafy_i_tumby.xml и тому подобное… То есть имя файла, в данном случае, должно начинаться с «Catalog» и заканчиваться на «.xml», с учетом регистра - любые другие вариации будут отклонены и на экран будет выведено сообщение «файл не найден». Хотя, физически он может находиться на сервере, но его скачивать не разрешено. Причем, так же в этом регулярном выражении нет возможностьи пропустить символ «/» и «.» (кроме точки в окончании имени файла). Это предотвращает возможность в качестве имени файла указать путь до файла в другой папке, аналогично примеру с «configuration.php», или например: http://www.domen-saita.ru/files/download.php?file=../drugaya-papka/test.xml То есть, данный скрипт позволит скачивать xml файлы только из той папки, в которой находится сам скрипт. Однако, Вы можете изменить структуру регулярного выражения так, чтобы допустить скачивание любых «txt», «xml», «pdf», а так же любых графических файлов типа «png», «gif» и прочее… В общем, тут Вы можете полностью сами решать какие файлы можно скачивать с помощью этого скрипта. Главное ни в коем случае не допускайте через этот скрипт скачивание системных файлов вашего сайта, которые могут нести какие-то важные настройки, логины и пароли. Если с помощью этого скрипта захотите организовать скачивание из разных директорий файловой системы, то подумайте о том чтобы не было возможности скачивать из папки типа «administrator» или «admin», или из папок, которые содержат файлы расширений CMS, в том числе их файлы конфигурации. На этом, собственно, вопрос безопасности завершается и дальше идет просто техническая работа по подготовке к скачиванию, если проверка пройдена успешно и файл с таким именем существует. Во второй строке скрипта запрашивается содержимое целевого файла и помещается в переменную. Далее передаются заголовки, в первом заголовке определяется тип данных и кодировка, а во втором заголовке передается требование вывести диалог сохранения документа на компьютер до вывода его в окне браузера. Далее предварительно опустошается (на всякий случай) и разрушается буфер. Затем запускается буферизация и все что выводится из переменной $content помещается в буфер, после чего выводится оттуда для скачивания. Алтернативный код Здесь представлен код того же скрипта, но чтение и дальнейшее скачивание файла с сервера происходит через функцию readfile(), что согласно документации php точно не должно вызвать проблем с переполнением памяти. На всякий случай, перед вызовом этой функции происходит очищение буфера с помощью ob_clean(). if (isset($_GET['file']) and preg_match("/^Catalog[a-zA-Z0-9_]{0,50}\.xml$/",$_GET['file']) and file_exists($_GET['file'])) { header('Content-Type: '.$ctype.'; charset=utf-8'); header("Content-Disposition: attachment; filename=".$_GET['file']); ob_clean(); readfile($_GET['file']); exit(); } else { echo "Файл не найден."; exit(); } Однако, я не хочу сказать что скрипт указанный в первой части статьи хуже, просто для него я не могу сказать как он поведет себя при скачивании файлов большого размера. В случае же второго варианта, со слов самих разработчиков php – таких проблем точно не возникнет. Дополнительное улучшение Если Вы надумаете использовать скрипт для скачивания файлов разных форматов, то будет полезно при каждом скачивании в заголовках правильно указывать тип передаваемых данных, т.н. MIME-типы (подробнее можно прочитать здесь). Для этого нужно добавить анализ имени файла на предмет его расширения, тогда скрипт будет примерно таков: if (isset($_GET['file']) and preg_match("/^[a-zA-Z0-9_\.\/\-]{0,50}\.(xml|txt|pdf|png|gif|jpg|jpeg|exe|doc|xls|ppt|zip|)$/",$_GET['file']) and file_exists($_GET['file'])) { $extension = strtolower(substr(strrchr($_GET['file'],"."),1)); switch ($extension) { case "txt": $ctype="text/plain"; break; 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 "jpeg": $ctype="image/jpg"; break; case "jpg": $ctype="image/jpg"; break; default: $ctype="application/force-download"; } header('Content-Type: '.$ctype.'; charset=utf-8'); header("Content-Disposition: attachment; filename=".$_GET['file']); ob_clean(); readfile($_GET['file']); exit(); } else { echo "Файл не найден."; exit(); } Кроме того, при желании, можно скрипт доработать таким образом чтобы ограничить количество скачиваний конкретного файла для одного пользователя. При этом прямой доступ к файлам перекрыть настройками сервера (например, через .htaccess на apache). Если информация этой статьи будет интересна и полезна Вашему кругу друзей и знакомых, то Вы можете опубликовать ссылку - тогда им проще будет ее найти. Они Вам будут благодарны:). Комментарии к статье: Вконтакте Facebook

Нашлось

15049 статей по запросу «скачать текстовый документ.txt»

скачать текстовый документ.txt
18.01.2017 09:19:48

Как создать документ в формате TXT (Текстовый документ ...

18 янв 2014 ... В этом видео вы узнаете, как создать текстовый документ.

скачать текстовый документ.txt
20.01.2017 10:19:48

Скачать файл: Новый текстовый документ.txt

Новый текстовый документ.txt. Скачать файл (94 Байт). 28 Августа 2013. Просмотры (8245) Скачивания (6897) Комментарии (0) ...

скачать текстовый документ.txt
13.01.2017 09:19:48

Редакторы текста скачать бесплатно - текстовые редакторы для ...

Бесплатный текстовый редактор уровня MS Word. Бесплатная ... Текстовый редактор, ориентированный на работу с документами в формате LaTeX.

скачать текстовый документ.txt
15.01.2017 10:19:48

Конвертируйте документы в формат TXT

Конвертируйте документы и электронные книги с помощью бесплатного он- лайн ... Загрузите документ, который вы хотите преобразовать в TXT : ... эл. книг FB2 · Конвертируйте текстовый файл в формат эл. книг Microsoft LIT ...

скачать текстовый документ.txt
21.01.2017 09:19:48

Скачать книги txt бесплатно

Бесплатно скачать книги txt, zip, jar, так же есть возможность читать книги ... с документами, письмами и отчетами, понимают, что txt - это текстовый ...

скачать текстовый документ.txt
15.01.2017 09:19:48

Конвертируйте в формат .doc от Word

Конвертируйте документы в формат DOC от Microsoft Word с помощью ... в DOC, ODT в DOC, SXW в DOC, RTF в DOC, WPD в DOC, TXT в DOC и HTML в  ...

Целуй Нюша Скачать Минус Крючком Цветы Объемные Схемы Консольный Торрент Клиент Linux Золотая Рыбка Скачать Ваенга Звери Лучшее Торрент Скачать Игра Эквестрия Герлз Скачать Игру Майнкрафт Скачать 1.6.4 Земфира Скачать Сборник Торрент Дорогая Сериал Скачать Торрент Драйвер На Джойстик Logitech Драйвера На Scx-4200 Скачать Дмитрий Карташов Песни Скачать Драйвер Canon Mg2440 Скачать Дифавтомат Обозначение На Схеме Драйвер Для Logitech Скачать Гаврилова Анна Книги Скачать Гель Глазной Видисик Инструкция Главная Книга Электрика Скачать Гнатюк Галина Минусовку Скачать Вячеслав Коротин Скачать Книги Скачать Игру Sniper Ghost 2 Warrior Через Торрент Вязаное Спицами Платье Схемы Гигиена Питания Учебник Королев Скачать Игру Снайпер Воин Призрак 3 Через Торрент Скачать Игру Happy Wheels На Компьютер Через Торрент