Създаване на ZIP архив в PHP. Създаване на страница с персонализирани архиви в WordPress Подробности за разглеждане архив php
Ако ви попитам кой стандартен тип страница на WordPress използвате най-рядко, отговорът ви най-вероятно ще бъде шаблонът за архиви. Или, по-вероятно, никога дори не сте чували за шаблона за архиви - толкова е непопулярен. Причината е проста. Стандартният начин за използване на архивите далеч не е удобен за потребителя.
Нека поправим това днес! Нека създадем страница с архиви на WordPress, която ще бъде наистина полезна. Най-хубавото е, че ще можете да използвате тези архиви във всяка модерна WordPress тема, инсталирана на вашия сайт. Нека обаче първо разберем какво имаме предвид под „архивна страница“?
История на архива на WordPress
В WordPress работите с много различни шаблони и структурни елементи, които идват веднага. Ако погледнем списъка с директории на темата Twenty Fifteen по подразбиране, виждаме следното:
- 404 страница за грешка
- Страница с архиви (наш гост днес)
- Страница с прикачено изображение
- Индексна страница (главна страница)
- Шаблон за страница (за стандартни страници)
- Страница с резултати от търсенето
- Индивидуални публикации и страници с прикачени файлове
Въпреки различните си цели, всички тези страници са много сходни по структура, като често се различават само в няколко области или няколко реда код. Единствената видима разлика между индексната страница и архивната страница е допълнителната заглавка в горната част, която се променя в зависимост от преглежданата страница.
Идеята зад структурата на архива е да предложи на администратора на блога удобен и лесен начин за показване на архиви въз основа на различни критерии. В края на краищата всички тези различни архивни страници са само версии на индексната страница; те показват съдържание, публикувано в определен период от време, от определен автор, с определени тагове и категории.
Това звучи добре от гледна точка на програмист, но не е най-удобният подход от гледна точка на потребителя. В този случай липсва едно важно ниво - нивото, което се намира между намерението на потребителя да намери съдържание и отделните елементи на архивите.
Това имам предвид. В момента единственият вграден начин за показване на архивирани връзки на WordPress сайт е чрез джаджа. Така че, ако искате да позволите на потребителите да копаят по-дълбоко в архивите и искате да го направите по начин, който хората могат да разберат, ще трябва да посветите цяла странична лента само на архивите (само за да изложите различни типове структуриране: архиви от дата, архиви по категория, тагове за архиви, архиви с авторски права и др.).
Нуждаем се от някакъв посредник, от някаква страница, която да приветства посетителя, да му обясни, че е в архива и да посочи съдържанието, което го интересува, или да предложи популярно съдържание.
Поради тази причина решихме да създадем персонализирана страница с архиви.
Как да създадете страница с персонализирани архиви в WordPress
Ето какво ще направим. Нашата персонализирана архивна страница ще бъде базирана на шаблон на персонализирана страница. Този шаблон ще ни позволи да направим следното:
- Добавете персонализирано съобщение (може да съдържа текст, изображения, регистрационен формуляр и т.н. - стандартно съдържание на WordPress).
- Показване на последните 15 записа (конфигурируеми)
- Показване на връзки към авторски архиви
- Показване на връзки към архиви по месеци
- Имайте допълнителни зони за джаджи (за показване на неща като популярно съдържание, категории, тагове).
Най-накрая страницата ще бъде адаптивна и ще може да се използва на всеки уебсайт.
Все пак трябва да започнем с тема. Използвах темата Zerif Lite. Признавам, че това е една от нашите собствени теми. Въпреки това, това е една от 10-те най-популярни теми, публикувани миналата година в директорията с теми на WordPress. Така че се надявам да го използвате.
И да, ако не ви харесва темата, няма нужда да спорите. Можете да използвате подхода, представен в тази статия, с всяка друга тема.
Да започнем с основния файл
Най-добрият модел за създаване на архивна страница е page.php файлът на текущата ви тема поради някои причини:
- Структурата му вече е оптимизирана за показване на произволно съдържание в основния блок със съдържание
- Това е може би един от най-простите шаблони за страници във вашата структура на тема.
Затова ще използваме файла page.php на темата Zerif Lite. Ще създам негово копие и ще го нарека tmpl_archives.php.
(Уверете се, че не наименувате страницата page-archives.php. Всички имена на файлове, започващи с „page-“, ще бъдат третирани като нови шаблони на страници в основната файлова йерархия на WordPress теми. Това е причината да използваме префикса tmpl_) .
Нека го променим на следното:
Всичко, което прави този ред, е да прехвърли съответния файл със съдържание за нашата страница с архиви.
Можете да премахнете други елементи, които изглеждат излишни от вашата архивна страница (като коментари, например), но се уверете, че сте премахнали всички елементи, които се отнасят до HTML структурата. И като цяло, не се страхувайте да експериментирате. В крайна сметка, ако нещо изведнъж спре да работи, винаги можете да се върнете към предишния код и лесно да го отстраните.
Освен това не забравяйте за стандартния коментар - описание на шаблона - който трябва да се намира в самото начало на вашия файл (в нашия случай във файла tmpl_archives.php):
В крайна сметка ще ни остане следната структура (с премахнати някои елементи за удобство):
В този файл ще трябва да премахнем всички ненужни неща, оставяйки само структурни елементи, както и извиквания към основни функции на WordPress:
Коментарът за контейнер в средата на кода е мястото, където ще вмъкнем нашите потребителски елементи.
Добавете персонализиран поздрав
Самият WordPress вече се е погрижил за това. Просто трябва да вмъкнем следния ред:
Добавяне на нови области на джаджи
Нека да настроим нови области на джаджи в WordPress, като използваме стандартния процес. Ще направим това с допълнителен файл с функции, за да запазим възможностите за многократна употреба от тема до тема. Ще създадем нов файл, archives-page-functions.php, като го поставим в главната директория на темата, а също така ще регистрираме две нови области на джаджи:
If(!function_exists("archives_page_widgets_init")) : function archives_page_widgets_init() ( /* Първи уиджет на страницата на архива, показан в ЛЯВО. */ register_sidebar(array("name" => __("Уиджет на страницата на архивите НАЛЯВО", "zerif) -lite"), "description" => __("Тази джаджа ще бъде показана от лявата страна на вашата архивна страница.", "zerif-lite"), "id" => "archives-left", "before_widget" => "
", "before_title" => "", "after_title" => "
",)); /* Втора притурка за архивна страница, показана в ДЯСНО. */ register_sidebar(array("name" => __("Притурка за страница на архиви ДЯСНО", "zerif-lite"), "description" => __ („Тази джаджа ще бъде показана от дясната страна на вашата архивна страница.“, „zerif-lite“), „id“ => „archives-right“, „before_widget“ => „ ", "before_title" => "", "after_title" => "
",)); ) endif; add_action("widgets_init", "archives_page_widgets_init");If(!function_exists("archives_page_styles")) : function archives_page_styles() ( if(is_page_template("tmpl_archives.php")) ( wp_enqueue_style("archives-page-style", get_template_directory_uri() . "/archives-page-style. css"); // стандартен начин за добавяне на таблици със стилове в WP. ) ) endif; add_action("wp_enqueue_scripts", "archives_page_styles");
Това е условна операция на опашка. Ще работи само ако посетителят разглежда архивираната страница.
Трябва да запомним да включим нашия нов файл archives-page-functions.php, като добавим следния ред в самия край на файла functions.php на текущата тема:
Изискване get_template_directory() . "/archives-page-functions.php";
И накрая, новият блок, който ще използваме в основния файл content-tmpl_archives.php, е доста прост. Поставете следния код под the_content();
Всичко, което ни остава сега, е да се погрижим за единствения липсващ файл, archives-page-style.css. Нека обаче го оставим за по-късно, тъй като ще го използваме като хранилище за всички стилове на нашата персонализирана архивна страница, включително за джаджи.
Показване на последните 15 записа
За да направим това, трябва да направим малко ръчно PHP кодиране. Въпреки че показването на публикации може да се реализира с помощта на различни джаджи, нека избегнем монотонността и се потопим в кодирането, за да демонстрираме повече различни възможности.
Вероятно се питате защо 15 записа? Не знам, просто извадих този номер от нищото. Нека го направим персонализиран с персонализирани полета.
Ето какво ще направим:
- Задаваме броя на публикациите, като използваме персонализираното поле archived-posts-no.
- Ако номерът не е валиден, шаблонът ще използва стойността по подразбиране от последните 15 записа.
По-долу е кодът, който прави това. Поставете го под предишната секция във файла content-tmpl_archives.php, който обработва новите области на джаджи.
ID, "archived-posts-no", true)); /* Тук се уверяваме, че извлеченото число е разумно. В случай че е по-високо от 200 или по-ниско от 2, ние просто го нулираме до стойността по подразбиране от 15. */ if($how_many_last_posts > 200 ||. $how_many_last_posts< 2) $how_many_last_posts = 15; $my_query = new WP_Query("post_type=post&nopaging=1"); if($my_query->have_posts()) ( ехо "
"; ехо "
- "; $counter = 1; while($my_query->have_posts() && $counter<= $how_many_last_posts) {
$my_query->съобщението(); ?>
- ">
Всичко, което прави този код, е да получи стойността на потребителско поле, да зададе броя на записите за показване и след това да избере тези записи от базата данни с помощта на WP_Query();. Също така използвам някои икони на Font Awesome, за да добавя малко усет към този блок.
Показване на връзки към авторски архиви
Този раздел е полезен само ако поддържате блог с множество автори. Пропуснете го, ако имате един автор.
Тази функционалност може да бъде реализирана с помощта на прост блок код, който трябва да бъде поставен в нашия файл content-tmpl_archives.php (под предишния блок):
Нашите автори
Ще стигнем до стиловете след няколко минути. Засега забележете, че всичко се прави чрез извикване на функцията wp_list_authors().
Показване на връзки към архиви по месеци
Добавих този елемент в самия край, защото не е най-полезният компонент от гледна точка на читателя. Въпреки това е важно да го имате на страницата с архиви, така че да не се налага да използвате уиджети за показване на архиви месец по месец другаде на сайта.
Ето как ще изглежда във файла content-tmpl_archives.php:
По месец
В този случай ще го покажем като отделен параграф със записи, разделени с наклонени черти (|).
Пълен шаблон на архивна страница
Нека да разгледаме пълния файл content-tmpl_archives.php, който е основният ни файл за извеждане на персонализиран архив:
Последни ".$how_many_last_posts." Публикации
"; ехо " "; $counter = 1; while($my_query->have_posts() && $counter<= $how_many_last_posts) {
$my_query->съобщението(); ?>
Нашите автори
По месец
Стил лист
И накрая, нека да разгледаме листа със стилове. Ето как изглежда файлът archives-page-style.css:
Archives-widget-left ( float: ляво; ширина: 50%; ) .archives-widget-right ( float: ляво; padding-left: 4%; ширина: 46%; ) .archives-latest-section ( ) .archives -последна секция ol ( стил на шрифта: курсив; размер на шрифта: 20px; подложка: 10px 0; ) .archives-последна-секция ol li ( подложка-наляво: 8px; ) .archives-authors-section ( ) .archives -authors-section ul ( list-style: none; text-align: center; border-top: 1px dotted #888; border-bottom: 1px dotted #888; padding: 10px 0; font-size: 20px; margin: 0 0 20px 0; .archives-authors-section ul li ( display: inline; padding: 0 10px; ) .archives-authors-section ul li a ( text-decoration:none; ) .archives-by-month-section ( разп. -подравняване: разстояние между думите: 5px; .archives-by-month-section p ( border-top: 1px dotted #888; border-bottom: 1px dotted #888; padding: 15px 0; ) .archives- by- month-section p a ( text-decoration:none; ) @media only screen and (max-width: 600px) ( .archives-widget-left ( width: 100%; ) .archives-widget-right ( width: 100 %; ) )
Стиловете се отнасят предимно до шрифтове и няколко структурни елемента, с изключение на няколко подравнявания, както и адаптивен дизайнерски блок в края.
Да видим как ще изглежда това на практика. Ето един сайт с много архивирано съдържание:
Как да интегрирате този шаблон във всяка тема
Страницата с персонализирани архиви, която създадохме тук, е за темата Zerif Lite, която е достъпна в официалната директория на WordPress. Въпреки това, както казах, може да се използва във връзка с всяка тема. Ето как да го направите:
- Взимаме файловете archives-page-style.css и archives-page-functions.php, които създадохме в урока, и след това ги поставяме в главната директория на темата.
- Редактирайте functions.php на темата и добавете следния ред в самия край: require get_template_directory() . ‘/archives-page-functions.php’;
- Вземете файла page.php на темата, направете го копие, преименувайте го, променете извикването на функцията get_template_part() на get_template_part('content', 'tmpl_archives');, след което добавете описателен коментар в самото начало: /* Шаблон Име: Персонализирана страница за архив */.
- Вземете файла content-page.php на вашата тема, направете го копие, преименувайте го content-tmpl_archives.php и добавете към него всички персонализирани блокове, които създадохме в урока, точно под извикването на функцията the_content();
- Нека тестваме и се наслаждаваме.
Ето как би изглеждало в темата Twenty Fifteen по подразбиране:
Ясно е, че за създателите на шаблони е по-лесно да използват стандартни функции и тагове за шаблони на WordPress, за да показват стандартни изгледи на всички страници на сайта, но това създава еднообразен външен вид и усещане за преход към едни и същи страници на сайта.
Веднага ще ви покажа какво получаваме в резултат.
Тип WordPress архиви: архив на категории преди промени
Архив на раздели с премахнати миниатюри и връзка за повече подробности.
важно!Тъй като тази задача се решава чрез промяна на кода на шаблона, преди да работим (база данни + файлове на сайта). Освен това правим две копия на работния шаблон, едно за редактиране, второ за възстановяване на неправилно редактиране.
Промяна на външния вид на WordPress архиви
За да промените външния вид на архивите на WordPress, трябва да намерите или по-скоро да определите кой файл във вашия работен шаблон показва архиви. В повечето шаблони всички архиви се извеждат в един файл, който се нарича (archive.php).
Повтарям, за да се предпазим от загуба на сайта, ние не използваме редактора в административния панел на сайта, а по-скоро редактираме предварително направените резервни копия на шаблонните файлове.
В текстов редактор (като Notepad++) отворете файла archive.php и започнете да редактирате. Във файла archive.php (в края на файла) търсим функция, която показва архивния блог:
Име е името на файла, който се използва за извеждане на архивния блог.
Първата идея за изпълнение на задачата е проста: трябва да променим кода на файла, който извежда архиви (content.php), а именно да премахнем няколко функции от него и по този начин да променим външния вид на всички архиви на сайта (категории, автори, дати и т.н.).
Но възниква въпросът, ако променим кода на шаблонния файл, той ще се върне в предишното си състояние след първата актуализация на шаблона, нямаме нужда от това. Затова няма да редактираме файла content.php, а ще го копираме и ще създадем наш собствен файл под друго име, например content-cat.php и ще го редактираме.
Търсим функция във файла, която показва миниатюри. Функцията за миниатюри ще бъде в горната част. Премахваме изхода с миниатюри.
илии премахнете реда с „Прочетете повече“, „име на шаблон“.
Записваме създадения и редактиран файл content-cat.php и го качваме в директорията на сайта в папката с работни шаблони. Този файл ще се появи в административния панел на сайта в раздела Облик→Редактор.
Да преминем към втората стъпка. Във файла, който показва архивите (archive.php), променете съдържанието на името на файла на content-cat.
Запазваме и гледаме резултата. Ако нещо не е наред, системата ще покаже грешка, файл за грешка и ред за грешка. За да коригирате грешката, върнете запазените архивни шаблонни файлове на мястото им и повторете всичко отново.
съвет.Ако искате да прочетете повече за етикетите на шаблони и стандартните функции на WordPress, обърнете внимание на този сайт: https://wp-kama.ru. Това не е реклама или дори връзка, този сайт е по-ясен от официалния сайт на WordPress в раздела за шаблони и маркери за функции.
В развитие на темата
Според мен темата за съобщенията в сайтовете на WordPress изисква продължение. В следващите публикации ще говоря по темите: и.
Кодекс на WordPress
Скрит текст
функцията_post_thumbnail
функция
the_post_thumbnail
Предназначение
Функцията_post_thumbnail извежда html кода на миниатюрното изображение на публикацията, празна стойност, ако няма изображение.
Приложение
Този етикет на шаблона, функцията the_post_thumbnail, трябва да се използва вътрешно
Използване
the_post_thumbnail(низ|масив $size = "след миниатюра", низ|масив $attr = "")Източник
файл: wp-includes/post-thumbnail-template.php
Функция the_post_thumbnail($size = "post-thumbnail", $attr = "") ( echo get_the_post_thumbnail(null, $size, $attr); )
Настроики
$size (низ/масив)
Размерът на миниатюрата за получаване. Може да бъде низ с условни размери: миниатюра, среден, голям, пълен или масив от два елемента (ширина и височина на изображението): array(60, 60).
По подразбиране: ‘post-thumbnail’, тоест размерът, зададен за текущата тема от функцията set_post_thumbnail_size()
$attr (низ/масив)
Масив от атрибути, които трябва да се добавят към получения html img таг (alt е алтернативно име).
По подразбиране:
Пример
" title= "_("permalink"), the_title_attribute("echo=0")); ?>"> !}get("layout", "imgwidth"), $SMTheme->get("layout", "imgheight")), array("class" => $SMTheme->get("layout","imgpos") . " избрано_изображение")); if (!is_single())( ?>Ето най-важните новини, които сме публикували през 2008 г. на сайта.
Актуализация (6 декември):Добавена липсваща корекция на сигурността на zip
Има много други допълнения и подобрения след последната алфа версия, но ето кратък преглед на най-важните промени:
- (документацията е актуализирана до текущото състояние)
- ext/msql е премахнат, докато ext/ereg вече ще повдига E_DEPRECATED известия
- ext/mhash е заменен с ext/hash, но се запазва пълен BC
- PHP вече използва cc като компилатор по подразбиране, вместо gcc
- Редица корекции на грешки в ext/pdo, ext/soap, потоковия слой между другото
Няколко промени под капака също изискват задълбочено тестване със съществуващи приложения, за да се гарантира, че всякакви прекъсвания на обратната съвместимост са сведени до минимум.
Ще се радваме разработчици, дизайнери, мениджъри или всеки друг с интерес към езика за програмиране PHP да се присъедини към нас за това, което обещава да бъде страхотно събитие на много разумна цена:
- Стандартни билети: £60.00
- Ранно записване (до 8 ноември): £50,00
- Преференциални билети: £35.00
* Потвърждение със заглавието на вашата фирма
**Със студентска книжка. Налични са ограничен брой места
Целта на тази алфа версия е да насърчи потребителите не само да участват активно в идентифицирането на грешки, но и да гарантират, че всички нови функции или необходими прекъсвания на обратната съвместимост са отбелязани в документацията. Моля, докладвайте всички открития на или на .
Има много други допълнения и подобрения, но ето кратък преглед на най-важните промени:
- (документацията може да е остаряла)
- Добавяне на , (phar е планирано за още малко работа в главата на alpha2) и разширения
- Незадължително циклично събиране на отпадъци
- Незадължителна поддръжка за заместващия драйвер MySQLnd за libmysql
- Windows, по-стари от Windows 2000 (Windows 98, NT4 и др.), вече не се поддържат ()
- Нови синтактични функции като , ограничен GOTO, троичен пряк път "?:"
Няколко промени под капака също изискват задълбочено тестване със съществуващи приложения, за да се гарантира, че всякакви прекъсвания на обратната съвместимост са сведени до минимум. Това е особено важно за потребители, които се нуждаят от недокументирана многобайтова поддръжка на двигателя Zend.
Нашият най-добър подател Felix De Vliegher всъщност е ангажирал последните си изпращания сам, тъй като въз основа на високото качество на изпращанията му са му предоставени права за ангажиране към PHP хранилището. Не сме получили обратна връзка от всички участници, но насърчаваме всички да публикуват блогове за своя опит и да ни предоставят обратна връзка за това как да подобрим бъдещи събития.
Сега, по-добре късно, отколкото никога, ето 10-те победители от обещаната томбола на elePHPant, спонсорирана от Nexen. Имайте предвид, че Феликс ме помоли да не го включвам в томболата, тъй като той вече пази доста elePHPants у дома.
- Ерик Стюарт
- Хавард Ейде
- Марк Велдман
- Микеланджело ван Дам
- Рейн Велт
- Роб Йънг
- Сами Грийнбъри
- Себастиан Дойч
- Себастиан Шюрман
- Стефан Коопманшап
Ще предоставим на Nexen имейл адресите на победителите, за да могат да уредят изпращането на elePHPants. Освен това за тези хора, които се чудят, можете да продължите да изпращате тестове на . Благодарим малко на всички участници и организаторите на TestFest! Без безбройните хора, които помогнаха за организирането на местни събития, внедриха инфраструктурата и рецензентите на изявленията, TestFest очевидно нямаше да се получи толкова добре, колкото се получи. Със сигурност ще правим подобни събития в бъдеще въз основа на големия успех на TestFest 2008.
Подобрения в сигурността и поправки в PHP 5.2.6:
- Коригирано възможно препълване на буфера на стека в FastCGI SAPI, идентифицирано от Андрей Нигматулин.
- Фиксирано целочислено препълване в printf(), идентифицирано от Maksymilian Aciemowicz.
- Фиксиран проблем със сигурността, описан подробно в CVE-2008-0599, идентифициран от Ryan Permeh.
- Поправен е байпас на safe_mode в cURL, идентифициран от Maksymilian Arciemowicz.
- Правилно адресиране на непълни многобайтови символи в escapeshellcmd(), идентифицирани от Stefan Esser.
- Пакетът PCRE е надстроен до версия 7.6
Интернет архивът предлага над 15,000,000 книги и текстове за свободно изтегляне. Има и колекция от тях, която може да бъде заета от всеки с безплатен акаунт в сайта.
Като алтернатива, нашият преносим настолен скенер може да бъде закупен и използван на място в рамките на библиотеки и архиви. За да прочетете повече за нашия TT Scribe, моля, посетете.
От 2005 г. Интернет архивът си сътрудничи и изгражда цифрови колекции с над 1100 библиотечни институциии други доставчици на съдържание. Партньорствата включват: , и . Тези колекции са дигитализирани от различни медийни типове, включително: и голямо разнообразие от . Значителен принос дойде от партньори в Северна Америка (и библиотеки) и , представляващи повече от 184 езика.
Интернет архивът насърчава нашата глобална общност да допринася с физически елементи, както и да качва цифрови материали директно в интернет архива. Ако имате цифрови елементи, които искате да добавите към Интернет архива, моля, добавете нов елемент, като използвате интерфейса за качване. Щракнете тук, за да приложите конкретния Creative Commons лиценз Creative Commons, за да съобщите как може да се използва материалът.
За дарение на физически книги или предмети, моля, свържете се с info@site
Безплатно за четене, изтегляне, отпечатване и наслаждаване. Някои имат ограничения за групова повторна употреба и търговска употреба, моля, вижте колекцията или спонсора на книга. Като предоставяме почти неограничен достъп до тези текстове, ние се надяваме да насърчим широкото използване на текстове в нов контекст от хора, които може да не са ги използвали преди.
Когато трябва бързо да изтеглите източници на уебсайт от сървър, дори сравнително бърз SSH тунел не осигурява необходимата скорост. И трябва да чакате много, много дълго време. И много хостинг доставчици не предоставят този достъп, а ви принуждават да се задоволите с FTP, който е в пъти по-бавен.
Лично за себе си съм набелязал изход. Малък скрипт се качва на сървъра и се стартира. След известно време получаваме архив с всички източници. И един файл, дори чрез древен FTP, се изтегля много по-бързо от сто малки.
По-рано на страниците на този блог, библиотеката zipArchive. Тогава обаче стана въпрос за разопаковане на архива.
Първо, трябва да разберем дали сървърът поддържа zipArchive. Тази популярна библиотека е инсталирана на по-голямата част от хостинг сайтовете.
Библиотеката е строго ограничена от php и сървърни параметри. Огромни бази данни и фото банки не могат да бъдат архивирани. Дори основите на добрата стара програма 1C за счетоводство. Изглежда, че те трябва да съдържат само текстови данни. Но не.
Съветвам ви да използвате библиотеката само когато архивирате относително малки сайтове с огромен брой малки файлове.
Нека проверим дали библиотеката е достъпна за работа
If (!extension_loaded("zip")) ( return false; )
Ако всичко е наред, скриптът ще продължи да се изпълнява.
Малък офтопик за такива проверки. Проверките трябва да се извършват по този начин, като се избягват големи структури с вложени скоби. По този начин кодът ще бъде по-атомичен и по-лесен за отстраняване на грешки. Сравнете
If(a==b)( if(c==d)( if(e==f)( echo "Всички условия са изпълнени"; )else echo "e<>f"; )else echo "c<>d"; )else echo "a<>b;
и този код
If(a!=b) exit("a<>b); if(c!=d) exit("c<>д); if(e!=f) exit("e<>е); echo "Всички условия изпълнени";
Кодът е по-хубав и не прераства в огромни вложени структури.
Съжалявам за извън темата, но исках да споделя тази находка.
Сега нека създадем обект и архив.
$zip = нов ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) ( return false; )
където $destination е пълният път до архива. Ако архивът вече е създаден, тогава файловете ще бъдат добавени към него.
$zip->addEmptyDir(str_replace($source. "/", "", $file. "/"));
където $source е пълният път до нашата категория (която първоначално архивирахме), $file е пълният път до текущата папка. Това се прави така, че архивът да не съдържа пълни пътища, а само относителни.
Добавянето на файл работи по подобен начин, но първо трябва да го прочетете в низ.
$zip->addFromString(str_replace($source. "/", "", $file), file_get_contents($file));
В края трябва да затворите архива.
Връщане $zip->close();
Не мисля, че има нужда да обяснявам как да преминете през всички файлове и поддиректории в папка. Google it, нещо подобно Рекурсивно обхождане на папки в php
Този вариант ме устройваше
Функция Zip($source, $destination)( if (!extension_loaded("zip") || !file_exists($source)) ( return false; ) $zip = new ZipArchive(); if (!$zip->open( $destination, ZIPARCHIVE::CREATE)) ( return false; ) $source = str_replace("\\", "/", realpath($source)); if (is_dir($source) === true)( $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file)($file = str_replace("\\", "/", $file); // Игнорирай "." и ".." папки if(in_array(substr($file, strrpos($file, "/")+1), array(".", ".."))) continue; $file = realpath($file ); $file = str_replace("\\", "$file); if (is_dir($file) === true)( $zip->addEmptyDir(str_replace. "/", "" , $file . "/")); else if (is_file($file) === true)( $zip->addFromString(str_source. "/", "$file), file_get_contents($) file)); ) ) )else if (is_file($source) === true)( $zip->addFromString(basename($source), file_get_contents($source)); ) return $zip->close(); )