Création d'une archive ZIP en PHP. Apparence par défaut des archives WordPress En développement du sujet

Voici les actualités les plus importantes que nous avons publiées en 2008 sur le site.


Mise à jour (6 décembre) : Ajout du correctif de sécurité zip manquant

Il y a eu un grand nombre d'autres ajouts et améliorations depuis la dernière alpha, mais voici un bref aperçu des changements les plus importants :

  • (la documentation a été mise à jour à l'état actuel)
  • ext/msql a été supprimé, tandis que ext/ereg générera désormais des notifications E_DEPRECATED
  • ext/mhash a été remplacé par ext/hash mais le BC complet est conservé
  • PHP utilise désormais cc comme compilateur par défaut, au lieu de gcc
  • Un certain nombre de corrections de bugs pour ext/pdo, ext/soap, la couche flux entre autres

Plusieurs changements sous le capot nécessitent également des tests approfondis avec les applications existantes pour garantir que toute rupture de compatibilité ascendante est minimisée.

Nous aimerions que les développeurs, les concepteurs, les managers ou toute autre personne intéressée par le langage de programmation PHP se joignent à nous pour ce qui promet d'être un événement génial à un tarif très raisonnable :

  • Billets standards : 60,00 £
  • Early bird (jusqu'au 8 novembre): 50,00 £
  • Billets réduits : 35,00 £

* Confirmation avec le papier à en-tête de votre entreprise
**Avec carte d'étudiant. Places limitées disponibles

CECI EST UN APERÇU DE DÉVELOPPEMENT - NE L'UTILISEZ PAS EN PRODUCTION !

Le but de cette version alpha est d'encourager les utilisateurs non seulement à participer activement à l'identification des bogues, mais également à garantir que toutes les nouvelles fonctionnalités ou les ruptures de compatibilité ascendante nécessaires sont notées dans la documentation. Veuillez signaler toute constatation au ou au .

De nombreux autres ajouts et améliorations ont été apportés, mais voici un bref aperçu des changements les plus importants :

  • (la documentation est peut-être obsolète)
  • Ajout du , (phar est prévu pour un peu plus de travail en tête d'alpha2) et des extensions
  • Collecte de place cyclique facultative
  • Prise en charge facultative du pilote de remplacement MySQLnd pour libmysql
  • Les Windows antérieurs à Windows 2000 (Windows 98, NT4, etc.) ne sont plus pris en charge ()
  • Nouvelles fonctionnalités de syntaxe telles que GOTO limité, raccourci ternaire "?:"

Plusieurs changements sous le capot nécessitent également des tests approfondis avec les applications existantes pour garantir que toute rupture de compatibilité ascendante est minimisée. Ceci est particulièrement important pour les utilisateurs qui ont besoin du support multi-octets non documenté du moteur Zend.

Notre principal contributeur, Felix De Vliegher, a lui-même validé ses dernières soumissions puisque, sur la base de la haute qualité de ses soumissions, il s'est vu accorder les droits de validation sur le référentiel PHP. Nous n'avons pas reçu de réponse de tous les participants, mais nous encourageons chacun à bloguer sur son expérience et à nous faire part de ses commentaires sur la façon d'améliorer les événements futurs.

Mieux vaut tard que jamais, voici les 10 gagnants du tirage au sort elePHPant promis et sponsorisé par Nexen. Notez que Félix m'a demandé de ne pas l'inclure dans le tirage au sort, car il élève déjà un certain nombre d'éléphants chez lui.

  • Éric Stewart
  • Håvard Eide
  • Marc Veldman
  • Michel-Ange van Dam
  • Rêne Velt
  • Rob Jeune
  • Sami Greenbury
  • Sébastien Deutsch
  • Sébastien Schürmann
  • Stefan Koopmanschap

Nous fournirons à Nexen les adresses e-mail des gagnants, afin qu'ils puissent organiser l'expédition des elePHPants. Aussi, pour ceux qui se posent la question, vous pouvez continuer à soumettre des tests sur le . Un petit merci à tous les participants et organisateurs du TestFest ! Sans les innombrables personnes qui ont aidé à organiser des événements locaux, à mettre en œuvre l'infrastructure et aux examinateurs des soumissions, le TestFest n'aurait évidemment pas fonctionné aussi bien. Nous organiserons sûrement des événements similaires à l'avenir sur la base du grand succès du TestFest 2008.

Améliorations et correctifs de sécurité dans PHP 5.2.6 :

  • Correction d'un éventuel débordement de tampon de pile dans le FastCGI SAPI identifié par Andrei Nigmatulin.
  • Correction d'un débordement d'entier dans printf() identifié par Maksymilian Aciemowicz.
  • Correction d'un problème de sécurité détaillé dans CVE-2008-0599 identifié par Ryan Permeh.
  • Correction d'un contournement safe_mode dans cURL identifié par Maksymilian Arciemowicz.
  • Corrigez correctement les caractères multioctets incomplets dans escapeshellcmd() identifiés par Stefan Esser.
  • PCRE fourni mis à niveau vers la version 7.6

Lorsque vous devez télécharger rapidement les sources d'un site Web à partir d'un serveur, même un tunnel SSH relativement rapide ne fournit pas la vitesse requise. Et il faut attendre très, très longtemps. Et de nombreux hébergeurs ne proposent pas cet accès, mais vous obligent à vous contenter du FTP, qui est bien plus lent.

Pour ma part, j’ai identifié une issue. Un petit script est téléchargé sur le serveur et lancé. Après un certain temps, nous recevons une archive avec toutes les sources. Et un fichier, même via l'ancien FTP, se télécharge beaucoup plus rapidement qu'une centaine de petits fichiers.

Précédemment sur les pages de ce blog, la bibliothèque zipArchive. Cependant, il s'agissait alors de décompresser les archives.

Tout d’abord, nous devons savoir si le serveur prend en charge zipArchive. Cette bibliothèque populaire est installée sur la grande majorité des sites d'hébergement.

La bibliothèque est strictement limitée par les paramètres PHP et du serveur. Les énormes bases de données et banques de photos ne peuvent pas être archivées. Même les bases du bon vieux programme de comptabilité 1C. Il semblerait qu'ils ne devraient contenir que des données textuelles. Mais non.

Je vous conseille d'utiliser la bibliothèque uniquement lors de l'archivage de sites relativement petits contenant un grand nombre de petits fichiers.

Vérifions si la bibliothèque est disponible pour travailler avec

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

Si tout va bien, le script continuera à s'exécuter.

Un petit hors-sujet pour de tels contrôles. Les vérifications doivent être effectuées de cette façon, en évitant les grandes structures avec des parenthèses imbriquées. De cette façon, le code sera plus atomique et plus facile à déboguer. Comparer

If(a==b)( if(c==d)( if(e==f)( echo "Toutes les conditions sont remplies"; )else echo "e<>f"; )sinon echo "c<>d"; )sinon echo "a<>b;

et ce code

Si(a!=b) exit("a<>b); si(c!=d) exit("c<>d); si(e!=f) exit("e<>F); echo "Toutes les conditions remplies" ;

Le code est plus agréable et ne se transforme pas en d'énormes structures imbriquées.

Désolé d'être hors sujet, mais je voulais partager cette trouvaille.

Créons maintenant un objet et une archive.

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

où $destination est le chemin complet vers l'archive. Si l'archive a déjà été créée, les fichiers y seront ajoutés.

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

où $source est le chemin complet de notre catégorie (que nous avons initialement archivée), $file est le chemin complet du dossier actuel. Ceci est fait pour que l'archive ne contienne pas de chemins complets, mais uniquement des chemins relatifs.

L'ajout d'un fichier fonctionne de la même manière, mais vous devez d'abord le lire dans une chaîne.

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

À la fin, vous devez fermer l'archive.

Renvoie $zip->close();

Je ne pense pas qu'il soit nécessaire d'expliquer comment parcourir tous les fichiers et sous-répertoires d'un dossier. Google, quelque chose comme Parcours récursif de dossiers en php

Cette option me convenait

Fonction 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); // Ignorer "." et ".." dossiers 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(); )

Hier, sur le forum, on m'a posé des questions créer des archives ZIP en PHP. J'ai réfléchi un peu et j'ai réalisé que ce sujet intéresserait un grand nombre de personnes, car Archivage ZIP en PHP un sujet très populaire. Et dans cet article, je vais montrer un exemple, comment créer une archive ZIP à l'aide d'un script PHP.

Laissez-moi vous donner un exemple tout de suite créer une archive ZIP, puis je le commenterai attentivement :

$zip = nouveau ZipArchive(); //Créer un objet pour travailler avec les archives ZIP
$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Ouvrir (créer) l'archive archive.zip
$zip->addFile("index.php"); //Ajouter le fichier index.php à l'archive
$zip->addFile("styles/style.css"); //Ajouter le fichier styles/style.css à l'archive
$zip->fermer(); //Terminer le travail avec l'archive
?>

À la suite de l'exécution de ce script, vous verrez Archives ZIP, qui aura un fichier à sa racine index.php, et un répertoire sera également créé modes, qui contiendra le fichier style.css. Je pense que tout cela est évident et logique. Et maintenant je vais commenter ce que nous avons fait avec vous :

  • Créé un objet ZipArchive en utilisant le constructeur.
  • Création d'une archive en utilisant la méthode ouvrir() objet ZipArchive. Nous avons transmis le nom de l'archive ( archive.zip) et une constante ZIPARCHIVE : CRÉER, qui signale que si l'archive n'existe pas, alors elle doit être créée.
  • Méthode ajouter le fichier() ajoute des fichiers à l'archive. Nous avons d'abord ajouté le fichier " index.php", qui se trouve dans le même répertoire que le script. Ensuite, nous avons ajouté le fichier style.css, indiquant également le chemin correct par rapport au script.
  • Méthode fermer() termine de travailler avec l'archive. Exécutez-le toujours pour libérer des ressources informatiques et également pour éviter divers problèmes associés au fonctionnement de ce script et d'autres scripts nécessitant un accès à cette archive.

De cette manière simple, vous pouvez créer automatiquement des archives ZIP en utilisant PHP. Dans le prochain article, nous discuterons avec vous, comment extraire l'archive zip via php.

L'Internet Archive propose plus de 15,000,000 Livres et textes téléchargeables gratuitement. Il existe également une collection qui peut être empruntée par toute personne disposant d'un compte gratuit sur le site.

Alternativement, notre scanner de table portable peut également être acheté et utilisé sur place dans les bibliothèques et les archives. Pour en savoir plus sur notre TT Scribe, veuillez visiter.

Depuis 2005, Internet Archive a collaboré et constitué des collections numériques avec plus de 1 100 bibliothèques et d'autres fournisseurs de contenu. Les partenariats comprennent : , le et le . Ces collections sont numérisées à partir de divers types de médias, notamment : , et une grande variété de . Des contributions importantes sont venues de partenaires d'Amérique du Nord (et de bibliothèques) et représentant plus de 184 langues.


Internet Archive encourage notre communauté mondiale à contribuer à des éléments physiques, ainsi qu'à télécharger des documents numériques directement sur Internet Archive. Si vous souhaitez ajouter des éléments numériques aux archives Internet, veuillez créer un nouvel élément en utilisant l'interface de téléchargement. Cliquez ici pour appliquer la licence Creative Commons spécifique. Licence Creative Commons pour communiquer comment le matériel peut être utilisé.

Pour un don de livres ou d'objets physiques, veuillez contacter info@site


Gratuit à lire, télécharger, imprimer et apprécier. Certains ont des restrictions sur la réutilisation en masse et l'utilisation commerciale, veuillez consulter la collection ou le sponsor d'un livre. En fournissant un accès quasi illimité à ces textes, nous espérons encourager une utilisation généralisée des textes dans de nouveaux contextes par des personnes qui ne les auraient peut-être pas utilisés auparavant.

Il est clair qu'il est plus facile pour les créateurs de modèles d'utiliser des fonctions standard et des balises de modèle WordPress pour afficher des vues standard de toutes les pages du site, mais cela crée une apparence uniforme et une sensation de transition vers les mêmes pages du site.

Je vais vous montrer tout de suite ce que nous obtenons comme résultat.

Type d'archives WordPress : archive des catégories avant modifications
Archive des sections avec vignettes supprimées et lien pour plus de détails.

Important! Puisque cette tâche est résolue en modifiant le code du modèle, nous effectuons avant le travail (base de données + fichiers du site). De plus, nous réalisons deux copies du modèle de travail, une pour l'édition, la seconde pour restaurer une édition incorrecte.

Changer l'apparence des archives WordPress

Pour modifier l'apparence des archives WordPress, vous devez rechercher, ou plutôt déterminer quel fichier de votre modèle de travail affiche les archives. Dans la plupart des modèles, toutes les archives sont sorties dans un seul fichier, appelé (archive.php).

Je le répète, pour ne pas perdre le site, nous n'utilisons pas l'éditeur dans le panneau d'administration du site, mais éditons plutôt les copies de sauvegarde préalablement réalisées des fichiers modèles.

Dans un éditeur de texte (tel que Notepad++), ouvrez le fichier archive.php et lancez l'édition. Dans le fichier archive.php (à la fin du fichier) on recherche une fonction qui affiche le blog d'archive :

Name est le nom du fichier utilisé pour générer le blog d'archive.

La première idée pour accomplir la tâche est simple: il faut changer le code du fichier qui sort les archives (content.php), à savoir lui supprimer plusieurs fonctions, et ainsi changer l'apparence de toutes les archives du site (catégories, auteurs, dates, etc.).

Mais la question se pose, si on change le code du fichier modèle, il reviendra à son état précédent après la première mise à jour du modèle, nous n'en avons pas besoin. Par conséquent, nous n'éditerons pas le fichier content.php, mais le copierons et créerons notre propre fichier sous un nom différent, par exemple content-cat.php et le modifierons.

Nous recherchons une fonction dans le fichier qui affiche des vignettes. La fonction vignette sera en haut. Nous supprimons la sortie miniature.

ouet supprimez la ligne avec « Lire la suite », « nom du modèle ».

Nous enregistrons le fichier content-cat.php créé et modifié et le téléchargeons dans le répertoire du site dans le dossier du modèle de travail. Ce fichier apparaîtra dans le panneau d'administration du site sous l'onglet Apparence → Éditeur.

Passons à la deuxième étape. Dans le fichier qui génère les archives (archive.php), remplacez le nom du fichier content par content-cat .

Nous sauvegardons et regardons le résultat. Si quelque chose ne va pas, le système affichera une erreur, un fichier d'erreur et une ligne d'erreur. Pour corriger l'erreur, remettez les fichiers de modèle de sauvegarde enregistrés à leur place et répétez tout à nouveau.

Conseil. Si vous souhaitez en savoir plus sur les balises de modèle et les fonctionnalités standard de WordPress, faites attention à ce site : https://wp-kama.ru. Ce n'est pas une publicité ni même un lien, ce site est plus clair que le site officiel WordPress dans la section modèles et balises de fonctionnalités.

En développement du sujet

À mon avis, le sujet des annonces sur les sites WordPress mérite d’être poursuivi. Dans les prochains articles, je parlerai des sujets : et.

Codex WordPress

Texte masqué

fonction the_post_thumbnail

Fonction

the_post_thumbnail

But

La fonction_post_thumbnail génère le code html de l'image miniature de la publication, une valeur vide s'il n'y a pas d'image.

Application

Cette balise de modèle, la fonction the_post_thumbnail, doit être utilisée en interne

Usage

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

Source

Déposer: wp-includes/post-thumbnail-template.php

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

Possibilités

$size (chaîne/tableau)

La taille de la vignette à recevoir. Il peut s'agir d'une chaîne avec des tailles conditionnelles : miniature, moyenne, grande, complète ou d'un tableau de deux éléments (largeur et hauteur de l'image) : array(60, 60).

Défaut: 'post-thumbnail', c'est-à-dire la taille définie pour le thème actuel par la fonction set_post_thumbnail_size()

$attr (chaîne/tableau)

Un tableau d'attributs qui doivent être ajoutés à la balise html img résultante (alt est un nom alternatif).

Défaut:

Exemple

" titre= "(!LANG :_("permalink"), the_title_attribute("echo=0")); ?>"> !}get("layout", "imgwidth"), $SMTheme->get("layout", "imgheight"), array("class" => $SMTheme->get("layout","imgpos") . " l'image sélectionnée")); si (!is_single())( ?>
mob_info