Erstellen eines ZIP-Archivs in PHP. Standarddarstellung von WordPress-Archiven In Entwicklung des Themas

Hier finden Sie die wichtigsten Nachrichten, die wir 2008 auf der Website veröffentlicht haben.


Update (6. Dezember): Fehlende Zip-Sicherheitskorrektur hinzugefügt

Seit der letzten Alpha gab es zahlreiche weitere Ergänzungen und Verbesserungen, hier ein kurzer Überblick über die wichtigsten Änderungen:

  • (Dokumentation wurde auf den aktuellen Stand gebracht)
  • ext/msql wurde entfernt, während ext/ereg jetzt E_DEPRECATED-Benachrichtigungen auslöst
  • ext/mhash wurde durch ext/hash ersetzt, der vollständige BC bleibt jedoch erhalten
  • PHP verwendet jetzt cc als Standard-Compiler anstelle von gcc
  • Eine Reihe von Fehlerbehebungen unter anderem für ext/pdo, ext/soap und die Stream-Ebene

Mehrere Änderungen unter der Haube erfordern außerdem ausführliche Tests mit vorhandenen Anwendungen, um sicherzustellen, dass etwaige Abwärtskompatibilitätsunterbrechungen minimiert werden.

Wir freuen uns über die Teilnahme von Entwicklern, Designern, Managern und allen anderen Personen mit Interesse an der Programmiersprache PHP an unserer vielversprechenden Veranstaltung zu einem sehr günstigen Preis:

  • Standardtickets: £60,00
  • Frühbucherpreis (bis 8. November): 50,00 £
  • Ermäßigte Eintrittskarten: 35,00 £

* Bestätigung mit dem Briefkopf Ihres Unternehmens
**Mit Studierendenausweis. Begrenzte Sitzplätze verfügbar

DIES IST EINE ENTWICKLUNGSVORSCHAU – VERWENDEN SIE SIE NICHT IN DER PRODUKTION!

Der Zweck dieser Alpha-Version besteht darin, Benutzer zu ermutigen, sich nicht nur aktiv an der Identifizierung von Fehlern zu beteiligen, sondern auch sicherzustellen, dass alle neuen Funktionen oder erforderlichen Abwärtskompatibilitätsunterbrechungen in der Dokumentation vermerkt werden. Bitte melden Sie etwaige Befunde dem bzw. der .

Es gab zahlreiche weitere Ergänzungen und Verbesserungen, hier ein kurzer Überblick über die wichtigsten Änderungen:

  • (Dokumentation möglicherweise veraltet)
  • Hinzufügung von , (für Phar sind weitere Arbeiten als Leiter von Alpha2 geplant) und Erweiterungen
  • Optionale zyklische Speicherbereinigung
  • Optionale Unterstützung für den MySQLnd-Ersatztreiber für libmysql
  • Windows älter als Windows 2000 (Windows 98, NT4 usw.) werden nicht mehr unterstützt ()
  • Neue Syntaxfunktionen wie , eingeschränktes GOTO, ternäre Abkürzung „?:“

Mehrere Änderungen unter der Haube erfordern außerdem ausführliche Tests mit vorhandenen Anwendungen, um sicherzustellen, dass etwaige Abwärtskompatibilitätsunterbrechungen minimiert werden. Dies ist besonders wichtig für Benutzer, die die undokumentierte Multibyte-Unterstützung der Zend-Engine benötigen.

Unser Top-Einreicher Felix De Vliegher hat seine letzten Einsendungen tatsächlich selbst festgeschrieben, da ihm aufgrund der hohen Qualität seiner Einsendungen Festschreibungsrechte für das PHP-Repository gewährt wurden. Wir haben nicht von allen Teilnehmern eine Antwort erhalten, aber wir ermutigen alle, über ihre Erfahrungen zu bloggen und uns Feedback zu geben, wie wir zukünftige Veranstaltungen verbessern können.

Jetzt besser spät als nie, hier sind die 10 Gewinner der versprochenen elePHPant-Verlosung, die von Nexen gesponsert wird. Beachten Sie, dass Felix mich gebeten hat, ihn nicht in die Verlosung einzubeziehen, da er zu Hause bereits eine ganze Reihe von Elefanten hütet.

  • Eric Stewart
  • Håvard Eide
  • Marc Veldmann
  • Michelangelo van Dam
  • Rein Velt
  • Rob Young
  • Sami Greenbury
  • Sebastian Deutsch
  • Sebastian Schürmann
  • Stefan Koopmanschap

Wir werden Nexen die E-Mail-Adressen der Gewinner mitteilen, damit diese den Versand der elePHPants veranlassen können. Für diejenigen, die sich das fragen: Sie können weiterhin Tests auf der Seite einreichen. Ein kleines Dankeschön an alle Teilnehmer und TestFest-Organisatoren! Ohne die unzähligen Menschen, die bei der Organisation lokaler Veranstaltungen, der Implementierung der Infrastruktur und den Prüfern der Einreichungen geholfen haben, hätte das TestFest offensichtlich nicht so gut geklappt wie es. Aufgrund des großen Erfolgs des TestFest 2008 werden wir sicherlich in Zukunft ähnliche Veranstaltungen durchführen.

Sicherheitsverbesserungen und Korrekturen in PHP 5.2.6:

  • Ein möglicher Stapelpufferüberlauf in der von Andrei Nigmatulin identifizierten FastCGI-SAPI wurde behoben.
  • Von Maksymilian Aciemowicz identifizierter Integer-Überlauf in printf() behoben.
  • Das in CVE-2008-0599 beschriebene, von Ryan Permeh identifizierte Sicherheitsproblem wurde behoben.
  • Eine von Maksymilian Arciemowicz identifizierte Safe_Mode-Umgehung in cURL wurde behoben.
  • Behandeln Sie unvollständige Multibyte-Zeichen ordnungsgemäß in escapeshellcmd(), identifiziert von Stefan Esser.
  • Das mitgelieferte PCRE wurde auf Version 7.6 aktualisiert

Wenn Sie Website-Quellen schnell von einem Server herunterladen müssen, bietet selbst ein relativ schneller SSH-Tunnel nicht die erforderliche Geschwindigkeit. Und man muss sehr, sehr lange warten. Und viele Hosting-Anbieter bieten diesen Zugang nicht an, sondern zwingen Sie, sich mit FTP zufrieden zu geben, was um ein Vielfaches langsamer ist.

Für mich persönlich habe ich einen Ausweg identifiziert. Ein kleines Skript wird auf den Server hochgeladen und gestartet. Nach einiger Zeit erhalten wir ein Archiv mit allen Quellen. Und eine Datei wird selbst über das alte FTP viel schneller heruntergeladen als hundert kleine.

Zuvor auf den Seiten dieses Blogs die zipArchive-Bibliothek. Dann ging es jedoch darum, das Archiv auszupacken.

Zuerst müssen wir herausfinden, ob der Server zipArchive unterstützt. Diese beliebte Bibliothek ist auf den meisten Hosting-Sites installiert.

Die Bibliothek ist streng durch PHP- und Serverparameter begrenzt. Riesige Datenbanken und Fotobanken können nicht archiviert werden. Sogar die Grundlagen des guten alten 1C-Programms für die Buchhaltung. Es scheint, dass sie nur Textdaten enthalten sollten. Aber nein.

Ich empfehle Ihnen, die Bibliothek nur zu verwenden, wenn Sie relativ kleine Websites mit einer großen Anzahl kleiner Dateien archivieren.

Lassen Sie uns prüfen, ob die Bibliothek zum Arbeiten verfügbar ist

If (!extension_loaded("zip")) ( return false; )

Wenn alles in Ordnung ist, wird das Skript weiterhin ausgeführt.

Ein kleines Offtopic für solche Checks. Prüfungen sollten auf diese Weise erfolgen und große Strukturen mit verschachtelten Klammern vermieden werden. Auf diese Weise wird der Code atomarer und einfacher zu debuggen. Vergleichen

If(a==b)( if(c==d)( if(e==f)( echo „Alle Bedingungen erfüllt“; )else echo „e<>f“; )else echo „c<>d“; )else echo „a<>B;

und dieser Code

If(a!=b) exit("a<>B); if(c!=d) exit("c<>D); if(e!=f) exit("e<>F); echo „Alle Bedingungen erfüllt“;

Der Code ist schöner und wächst nicht zu riesigen verschachtelten Strukturen.

Tut mir leid, dass ich vom Thema abweiche, aber ich wollte diesen Fund teilen.

Jetzt erstellen wir ein Objekt und ein Archiv.

$zip = new ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) ( return false; )

Dabei ist $destination der vollständige Pfad zum Archiv. Wenn das Archiv bereits erstellt wurde, werden die Dateien hinzugefügt.

$zip->addEmptyDir(str_replace($source . "/", "", $file . "/"));

Dabei ist $source der vollständige Pfad zu unserer Kategorie (die wir ursprünglich archiviert haben) und $file der vollständige Pfad zum aktuellen Ordner. Dies geschieht, damit das Archiv keine vollständigen, sondern nur relative Pfade enthält.

Das Hinzufügen einer Datei funktioniert auf ähnliche Weise, Sie müssen diese jedoch zunächst in einen String einlesen.

$zip->addFromString(str_replace($source . "/", "", $file), file_get_contents($file));

Am Ende müssen Sie das Archiv schließen.

Rückgabe $zip->close();

Ich glaube nicht, dass es nötig ist, zu erklären, wie man alle Dateien und Unterverzeichnisse in einem Ordner durchgeht. Google es, so etwas wie Rekursives Durchlaufen von Ordnern in PHP

Diese Option hat mir gefallen

Funktion 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); // Ignorieren "." und „..“ Ordner 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($source . "/", "" , $file . "/")); )else if (is_file($file) === true)( $zip->addFromString(str_replace($source . "/", "", $file), file_get_contents($ file)); ) ) )else if (is_file($source) === true)( $zip->addFromString(basename($source), file_get_contents($source)); ) return $zip->close(); )

Gestern wurde ich im Forum danach gefragt Erstellen von ZIP-Archiven in PHP. Ich dachte ein wenig nach und erkannte, dass dieses Thema für viele Menschen interessant sein würde, denn ZIP-Archivierung in PHP ein sehr beliebtes Thema. Und in diesem Artikel werde ich ein Beispiel zeigen, So erstellen Sie ein ZIP-Archiv mit einem PHP-Skript.

Lassen Sie mich Ihnen gleich ein Beispiel geben Erstellen eines ZIP-Archivs, und dann werde ich es sorgfältig kommentieren:

$zip = new ZipArchive(); //Erstelle ein Objekt für die Arbeit mit ZIP-Archiven
$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Archiv archive.zip öffnen (erstellen).
$zip->addFile("index.php"); //Fügen Sie die Datei index.php zum Archiv hinzu
$zip->addFile("styles/style.css"); //Fügen Sie die Datei „styles/style.css“ zum Archiv hinzu
$zip->close(); //Beenden Sie die Arbeit mit dem Archiv
?>

Als Ergebnis der Ausführung dieses Skripts werden Sie sehen ZIP-Archiv, das eine Datei im Stammverzeichnis haben wird index.php, und es wird auch ein Verzeichnis erstellt Stile, das die Datei enthalten wird style.css. Ich denke, das ist alles offensichtlich und logisch. Und jetzt kommentiere ich, was wir mit Ihnen gemacht haben:

  • Ein Objekt erstellt ZipArchive mit dem Konstruktor.
  • Mit der Methode wurde ein Archiv erstellt offen() Objekt ZipArchive. Wir haben den Namen des Archivs weitergegeben ( archive.zip) und eine Konstante ZIPARCHIVE::CREATE, die meldet, dass das Archiv erstellt werden muss, wenn es nicht existiert.
  • Methode Datei hinzufügen() Fügt Dateien zum Archiv hinzu. Zuerst haben wir die Datei hinzugefügt „ index.php", die sich im selben Verzeichnis wie das Skript befindet. Als nächstes haben wir die Datei hinzugefügt style.css und gibt auch den korrekten Pfad dazu relativ zum Skript an.
  • Methode schließen() beendet die Arbeit mit dem Archiv. Führen Sie es immer aus, um Computerressourcen freizugeben und um verschiedene Probleme im Zusammenhang mit der Ausführung dieses Skripts und anderer Skripts, die Zugriff auf dieses Archiv benötigen, zu vermeiden.

Auf diese einfache Weise können Sie Erstellen Sie automatisch ZIP-Archive mit PHP. Im nächsten Artikel besprechen wir mit Ihnen, So extrahieren Sie ein ZIP-Archiv per PHP.

Das Internetarchiv bietet über 15,000,000 frei herunterladbare Bücher und Texte. Es gibt auch eine Sammlung davon, die von jedem mit einem kostenlosen Site-Konto ausgeliehen werden kann.

Alternativ kann unser tragbarer Tischscanner auch erworben und vor Ort in Bibliotheken und Archiven eingesetzt werden. Um mehr über unseren TT Scribe zu erfahren, besuchen Sie bitte.

Seit 2005 hat das Internet Archive mit über zusammengearbeitet und digitale Sammlungen aufgebaut 1.100 Bibliothekseinrichtungen und andere Inhaltsanbieter. Zu den Partnerschaften gehören: , the und the . Diese Sammlungen werden aus verschiedenen Medientypen digitalisiert, darunter: und einer Vielzahl von . Bedeutende Beiträge kamen von Partnern in Nordamerika (und Bibliotheken) und , die mehr als 184 Sprachen repräsentieren.


Das Internet Archive ermutigt unsere globale Community, physische Artikel beizusteuern und digitale Materialien direkt in das Internet Archive hochzuladen. Wenn Sie über digitale Objekte verfügen, die Sie zum Internetarchiv hinzufügen möchten, erstellen Sie bitte über die Uploader-Schnittstelle ein neues Objekt. Klicken Sie hier, um die spezifische Creative-Commons-Lizenz anzuwenden und mitzuteilen, wie das Material verwendet werden kann.

Für die Spende physischer Bücher oder Gegenstände wenden Sie sich bitte an info@site


Kostenlos zum Lesen, Herunterladen, Drucken und Genießen. Bei einigen gelten Einschränkungen hinsichtlich der Massenwiederverwendung und der kommerziellen Nutzung. Bitte wenden Sie sich an die Sammlung oder den Sponsor eines Buches. Indem wir einen nahezu uneingeschränkten Zugang zu diesen Texten ermöglichen, hoffen wir, die weitverbreitete Nutzung von Texten in neuen Kontexten durch Menschen zu fördern, die sie zuvor möglicherweise noch nicht verwendet haben.

Es ist klar, dass es für Vorlagenersteller einfacher ist, Standardfunktionen und WordPress-Vorlagen-Tags zu verwenden, um Standardansichten aller Seiten der Website anzuzeigen, aber Dadurch entsteht ein einheitliches Erscheinungsbild und ein Gefühl des Übergangs zu denselben Seiten der Website.

Ich zeige Ihnen gleich, was dabei herauskommt.

Art der WordPress-Archive: Archiv der Kategorien vor Änderungen
Archiv der Abschnitte mit entfernten Miniaturansichten und einem Link für weitere Details.

Wichtig! Da diese Aufgabe durch Ändern des Vorlagencodes gelöst wird, erledigen wir vor der Arbeit (Datenbank + Site-Dateien). Darüber hinaus erstellen wir zwei Kopien der Arbeitsvorlage, eine zur Bearbeitung, die zweite zur Wiederherstellung fehlerhafter Bearbeitungen.

Das Erscheinungsbild von WordPress-Archiven ändern

Um das Erscheinungsbild von WordPress-Archiven zu ändern, müssen Sie herausfinden bzw. bestimmen, welche Datei in Ihrer Arbeitsvorlage Archive anzeigt. In den meisten Vorlagen werden alle Archive in einer einzigen Datei ausgegeben, diese heißt (archive.php).

Ich wiederhole: Um die Site nicht zu verlieren, verwenden wir nicht den Editor im Verwaltungsbereich der Site, sondern bearbeiten die zuvor erstellten Sicherungskopien der Vorlagendateien.

Öffnen Sie in einem Texteditor (z. B. Notepad++) die Datei archive.php und beginnen Sie mit der Bearbeitung. In der Datei archive.php (am Ende der Datei) suchen wir nach einer Funktion, die den Archiv-Blog anzeigt:

Name ist der Name der Datei, die zur Ausgabe des Archivblogs verwendet wird.

Die erste Idee zur Lösung der Aufgabe ist einfach: Wir müssen den Code der Datei ändern, die die Archive ausgibt (content.php), nämlich mehrere Funktionen daraus entfernen und dadurch das Erscheinungsbild aller Archive der Site (Kategorien, Autoren, Daten usw.) ändern.

Aber es stellt sich die Frage, wenn wir den Code der Vorlagendatei ändern, wird diese nach der ersten Aktualisierung der Vorlage wieder in ihren vorherigen Zustand zurückkehren, das brauchen wir nicht. Daher werden wir die Datei content.php nicht bearbeiten, sondern kopieren und eine eigene Datei unter einem anderen Namen erstellen, zum Beispiel content-cat.php, und diese bearbeiten.

Wir suchen in der Datei nach einer Funktion, die Miniaturansichten anzeigt. Die Miniaturbildfunktion befindet sich oben. Wir entfernen die Miniaturbildausgabe.

oderund entfernen Sie die Zeile mit „Weiterlesen“, „Vorlagenname“.

Wir speichern die erstellte und bearbeitete Datei content-cat.php und laden sie in das Site-Verzeichnis im Arbeitsvorlagenordner hoch. Diese Datei wird im Verwaltungsbereich der Site auf der Registerkarte „Darstellung“ → „Editor“ angezeigt.

Kommen wir zum zweiten Schritt. Ändern Sie in der Datei, die Archive ausgibt (archive.php), den Dateinamen content in content-cat .

Wir speichern und schauen uns das Ergebnis an. Wenn etwas nicht stimmt, zeigt das System einen Fehler, eine Fehlerdatei und eine Fehlerzeile an. Um den Fehler zu beheben, bringen Sie die gespeicherten Backup-Vorlagendateien an ihren Platz zurück und wiederholen Sie alles noch einmal.

Beratung. Wenn Sie mehr über Template-Tags und Standardfunktionen von WordPress erfahren möchten, schauen Sie sich diese Website an: https://wp-kama.ru. Dies ist keine Werbung oder gar ein Link. Diese Website ist im Abschnitt „Templates“ und „Feature-Tags“ klarer als die offizielle WordPress-Website.

In der Entwicklung des Themas

Meiner Meinung nach muss das Thema Ankündigungen auf WordPress-Seiten fortgeführt werden. In den kommenden Beiträgen werde ich über die Themen sprechen: und.

WordPress-Codex

Versteckter Text

the_post_thumbnail-Funktion

Funktion

the_post_thumbnail

Zweck

Die Funktion_post_thumbnail gibt den HTML-Code des Miniaturbilds des Beitrags aus, einen leeren Wert, wenn kein Bild vorhanden ist.

Anwendung

Dieses Vorlagen-Tag, die Funktion „the_post_thumbnail“, muss intern verwendet werden

Verwendung

the_post_thumbnail(string|array $size = "post-thumbnail", string|array $attr = "")

Quelle

Datei: wp-includes/post-thumbnail-template.php

Funktion the_post_thumbnail($size = "post-thumbnail", $attr = "") ( echo get_the_post_thumbnail(null, $size, $attr); )

Optionen

$size (String/Array)

Die Größe des zu empfangenden Miniaturbilds. Es kann eine Zeichenfolge mit bedingten Größen sein: Miniaturansicht, mittel, groß, vollständig oder ein Array aus zwei Elementen (Bildbreite und -höhe): array(60, 60).

Default: „post-thumbnail“, also die Größe, die für das aktuelle Theme durch die Funktion set_post_thumbnail_size() festgelegt wird

$attr (String/Array)

Ein Array von Attributen, die dem resultierenden HTML-IMG-Tag hinzugefügt werden müssen (Alt ist ein alternativer Name).

Default:

Beispiel

" title= "_("permalink"), the_title_attribute("echo=0")); ?>"> !}get("layout", "imgwidth"), $SMTheme->get("layout", "imgheight")), array("class" => $SMTheme->get("layout","imgpos") . " feature_image")); if (!is_single())( ?>
mob_info