php скрипт для архивирования
Php скрипт для архивирования
В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Совет: активация отображения всех ошибок в PHP
При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.
Агент
PHP парсер юзер агента с поддержкой Laravel, работающий на базе библиотеки Mobile Detect.
Создание ZIP-архива на PHP
Вчера на форуме у меня спросили про создание ZIP-архивов на PHP. Я немного подумал и понял, что это тема будет интересна большому числу людей, ведь ZIP-архивирование на PHP весьма популярная тема. И в этой статье я покажу пример, как создаётся ZIP-архив через PHP-скрипт.
Давайте я сразу приведу пример создания ZIP-архива, а потом его тщательно прокомментирую:
open(«archive.zip», ZIPARCHIVE::CREATE); //Открываем (создаём) архив archive.zip
$zip->addFile(«index.php»); //Добавляем в архив файл index.php
$zip->addFile(«styles/style.css»); //Добавляем в архив файл styles/style.css
$zip->close(); //Завершаем работу с архивом
?>
В результате выполнения данного скрипта появится ZIP-архив, у которого в корне будет лежать файл index.php, а также будет создана директория styles, в которой будет находиться файл style.css. Я думаю, что это всё очевидно и логично. А теперь комментирую, что мы с Вами делали:
Вот таким простым способом Вы можете создавать в автоматическом режиме ZIP-архивы с помощью PHP. В следующей статье мы с Вами разберём, как извлекать ZIP-архив через PHP.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 21 ):
Напишите статью о том, как создать дерево файлов в каталоге и в подкаталогах.
Не очень понятно, что означает «как создать дерево файлов»? Это просто вывести на страницу список всех каталогов, подкаталогов, файлов, файлов внутри подкаталогов и так далее. Вы это хотите?
Да, конечно так. Я пытался так сделать, но у меня работало с ошибками.
Хорошо, напишу в пятницу такую статью.
Это будет интересно. Спасибо.
А как в архив добавить папку с под папками и файлами чтоб не добавлять все файлы в ручную?
Так просто нельзя. Всё равно придется создавать создавать каждую папку как пустую и в неё уже добавлять файлы.
Нет расширения этого php_zip.dll
Это получается что вообще нельзя создавать архивы? Это ведь Денвер
Установите дополнительные модули, их можно скачать на официальном сайте.
Дали бы сразу и ссылку в этой статье на расширение.
Создание ZIP-архива каталога на PHP
ZIP-архивирование на PHP довольно популярная тема. В данной статье покажу пример, как создается ZIP-архив каталога через PHP-скрипт.
Давайте я сразу приведу пример создания ZIP-архива, а затем его тщательно прокомментирую:
В результате выполнения данного скрипта появится ZIP-архив, у которого в корне будет лежать файл ‘index.php‘. Я думаю, что это все очевидно и логично. А теперь комментирую, что мы с Вами делали:
1. Создали объект ZipArchive с помощью конструктора.
2. Создали архив с помощью метода Open объекта ZipArchive. Мы передали название архива archive.zip и константу ZIPARCHIVE::CREATE, которая сообщает, если архив не существует, то его надо создать.
3. Метод AddFile добавляет в архив файл ‘index.php‘, который находится в одной директории со скриптом.
4. Метод Close завершает работу с архивом. Всегда его выполняйте, чтобы освободить ресурсы компьютера, а также избежать проблем, связанных с работой этого скрипта и других скриптов, которым необходим доступ к этому архиву.
Вот таким простым способом можно создавать в автоматическом режиме ZIP-архивы с помощью PHP.
Если вы хотите скачать все содержание каталога, то вам необходимо создать архив файлов с сохранением структуры, а затем скачать его с сервера. Вот код:
Также необходимо написать о разархивирования ZIP-архив через PHP.
Порядок создания архива был прост: открыть, добавить файлы в архив, закрыть. Для извлечения ZIP-архива порядок очень похож: открыть, вытащить, закрыть. Фактически, меняется только центральная часть. Давайте разберем простой пример:
Таким образом, все файлы и папки, которые находятся в ZIP-архиве будут загружены в указанную директорию.
Как использовать Zip и Unzip файлы в PHP
Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)
Сжатие файлов при их передаче через Интернет имеет множество преимуществ. В большинстве случаев, общий размер всех файлов в сжатом виде приятно уменьшается. Это означает, что вы сэкономите трафик, а пользователи получат более быструю скорость загрузки. Когда пользователи загрузят файл, они могут распаковывать его в любое время. Короче говоря, сжатие может сделать передача файлов через Интернет намного проще и для вас, и для ваших посетителей.
Один из факторов, из-за которого вы можете отказаться от сжатия файлов или этот процесс для вас очень утомителен — вы делаете это вручную. К счастью, у PHP есть множество расширений, которые специально предназначены для сжатия и извлечения файлов. Вы можете использовать функции, доступные в этих расширениях, для автоматического сжатия файлов на PHP.
В этом уроке вы научитесь применять zip и unzip — сжимать и извлекать файлы в/из zip-архив в PHP. Вы также узнаете, как удалить или переименовать файлы в архиве, не без их извлечения.
Сжатие файлов в PHP
Класс PHP ZipArchive обладает множеством свойств и методов, которые помогут вам сжсжимать и распаковывать все ваши файлы.
Сжатие отдельных файлов
Допустим, у вас есть веб-сайт, который позволяет пользователям скачивать файлы шрифтов вместе с их лицензиями. Файлы, подобные этим, станут прекрасными примерами автоматизированного архивирования на PHP. Следующий код показывает, как это делается.
Следует отметить, что исходные файлы находились внутри каталога fonts/Monoton. Однако, код PHP помещает его прямо в корень нашего архива. Вы можете изменить структуру каталогов, а также имена файлов, находящихся в архиве.
Сжатие нескольких файлов из каталога
Следующий фрагмент кода прояснит использование addGlob() и всех этих параметров.
В первом случае мы перебираем все файлы .jpg в каталоге lights и помещаем их в каталог light_wallpapers в архиве. Аналогично, мы перебираем все файлы .ttf в каталоге documents, а затем помещаем их в архив в папку с именем font_files. Наконец, мы перебираем сразу все файлы .jpg и .png в наших документах и помещаем их все вместе в каталог images.
Извлечение содержимого из архива
Структура каталогов и файлов будет сохранена во время извлечения, и файлы будут извлечены в соответствующие каталоги.
Если вы пропустите второй параметр, данный метод извлечёт все файлы из архива.
Больше контроля над архивами
Класс ZipArchive также имеет множество других методов и свойств, которые помогут вам получить больше информации о архиве перед извлечением всего его содержимого.
В следующем примере, мы удаляем все файлы из архива, содержащие слово Italic. Аналогичный код можно использовать для удаления всех файлов, которые не содержат определенного слова. Также, вы можете перебирать файлы и заменять определенное слово на другое.
В приведённом выше коде, мы используем deleteName() для удаления конкретного файла. Однако, вы можете использовать его для удаления всего каталога.
Заключительные мысли
С помощью count() и numFiles у вас будет больше контроля над отдельными файлами, а их переименование или удаление будет очень простым. Обязательно посмотрите документацию хотя бы один раз, чтобы узнать больше об этих функциях.
Работа с ZIP архивами в PHP
Расширение архива Zip в PHP используется для работы с Zip архивами и файлами, которые в них содержатся. Для использования этого расширения в PHP 5 необходимо активировать php_zip.dll внутри файла php.ini. В этой статье вы узнаете о том, как работать с файлами Zip архивов в PHP, используя ряд PHP демо-приложений. Вы научитесь: создавать Zip архивы;
Создание Zip архивов в PHP и добавление файлов
Для создания Zip архива в PHP можно использовать предопределенную константу ZIPARCHIVE::CREATE; архив будет создан, если он еще не существует. (Для добавления файлов внутрь архива можно использовать вышеописанные методы addFile и addFromString.) Первое демо-приложение (add_file_from_string.php) создает (если таковой еще не существует) или открывает Zip архив archive1.zip, а после добавляет в него файл, используя метод addFromString():
Здесь код для add_file_from_string.php:
С результаты выполнения add_file_from_string.php вы также можете ознакомиться на Рисунке 1.
Файловый текст test1.txt был успешно добавлен в archive1.zip
Рис.1 The archive1.zip
Второе демо-приложение (add_file_directory.php) также использует архив archive1.zip для печати всех характеристик объекта ZipArchive (статус, statusSys, numFiles, название файла, комментарии или специальные параметры, в нашем случае архивный комментарий и количество файлов), чтобы добавить пустой каталог под названием Subdirectory1. Это приложение также использует архив archive1.zip для добавления нового файла, используя метод addFile. Ниже содержатся прототипы методов addFile() и addEmptyDir():
Здесь код для add_file_directory.php:
С результатом листинга add_file_directory.php вы также можете ознакомиться на Рисунке 2:
ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 2 [filename] => D:\Apache Group\Apache2\htdocs\php\ZIP\archive1.zip [comment] => PHP ZIP ARCHIVE ) Создан новый каталог Комментарий: PHP ZIP ARCHIVE № файла:4
Рисунок 2. Характеристики объекта archive2.zip
Следующее демо-приложение служит для создания Zip архива archive2.zip, который включает два файла: test3.txt и test4.txt. (Информацию о том, как пользоваться этим приложением, вы сможете найти ниже.) Код для archive2.php:
Результат archive2.php. Вы также можете ознакомиться с результатами на Рисунке 3: Файловый текст test3.txt успешно добавлен в archive2.zip при использовании метода addFile Файловый текст test4.txt успешно добавлен в archive2.zip при использовании метода addFromString method.
Рисунок 3. Содержание archive2.zip
Извлечение Zip архива в PHP
Архивы archive1.zip и archive2.zip будут извлечены в папку archive, как показано на Рисунке 4. Код для extract_archives.php:
Результат extract_archives.php: archive1.zip и archive2.zip были извлечены в папку archive!
Рисунок 4. Содержимое папки archive после извлечения archive1 и archive2
Следующее демо-приложение (extract_to_specified_folder.php) извлекает содержимое Zip архива в специальную папку, используя вышеописанный метод extractTo(). Код для extract_to_specified_folder.php:
Результат extract_to_specified_folder.php. Вы также можете ознакомиться с результатами на Рисунке 5: Архив извлечен в папку ZIP_extract!
Рисунок 5. Папка ZIP_extract с файлами archive1
С результатами листинга filelist.php вы также можете ознакомиться с на Рисунке 6: Файлы test3.txt и test4.txt из архива archive2.zip успешно извлечены в указанный каталог ZIP_TEST!
Рисунок 6.Выбранные файлы, извлеченные из archive2 в назначеный каталог ZIP_TEST
Получение характеристик объекта на основе его индекса
Для получения характеристик отдельного файла можно использовать метод statIndex:
Следующее демо-приложение (statIndex.php) итерирует список файлов в archive2.zip и печатает характеристики для каждого из объектов. Код для statIndex.php:
Результат листинга 5.php:
Следующее демо-приложение (locate.php) также позволяет получать характеристики файла, при условии что archive1.zip содержит этот файл. Метод locateName возвращает индекс файла в архиве и использует предопределенную константу ZIPARCHIVE::FL_NODIR, которая игнорирует компонент каталог. Прототип константы ZIPARCHIVE::FL_NODIR :
Результат листинга locate.php:
Удаление и переименование Zip архивов в PHP
Для удаления или переименования Zip архивов в PHP можно использовать имя или индекс. Методы, которыми можно воспользоваться для этой цели, включают:
Следующее демо-приложение (rename.php) использует все вышеперечисленные методы для переименования файла с «index=3», как «renameByIndex.txt», и «test4.txt», как «renameByName.txt». Код для rename.php:
Результаты листинга rename.php. Вы также можете ознакомиться с результатами на Рисунке 7 и Рисунке 8: Файлы успешно переименованы в архиве archive2.zip!
Рисунок 7. Исходное содержимое archive2.zip
Рисунок 8. Содержание архива archive2.zip после того, как файлы были переименованы
Следующее приложение (delete.php) удаляет из archive2.zip файл с «index=1» и текстовый файл renameByIndex.txt, используя методы deleteIndex() и deleteName(). Код для delete.php:
Результаты листинга add_text_files.php: text_archive.zip успешно создан!
Рисунок 9. Группировка всех текстовых файлов из текущего каталога в новый архив text_archive.zip
Заключение
Как вы, наверное, заметили, изучая приложения, представленные в статье, работать с расширением архива Zip в PHP довольно просто и даже забавно. Все, что от вас требуется, это умение обращаться с методами расширения. В этом случае вы с успехом сможете осуществлять различные операции с Zip архивами.