Article tagué php

FPDF – Librairie PHP pour générer des PDF

Voici une librairie PHP que je viens d’utiliser tout récemment pour générer automatiquement un fichier PDF (à sauvegarder ou imprimer) en sortie d’un formulaire en ligne, reprenant les informations entrées dans ce formulaire.

FPDF est une classe PHP qui permet de générer des fichiers PDF en pur PHP, c’est-à-dire sans utiliser la librairie PDFlib. Le F de FPDF signifie Free : vous êtes libre de l’utiliser et de la modifier comme vous le souhaitez.

FPDF ne nécessite aucune extension (à part zlib pour activer la compression et GD pour le support du GIF) et fonctionne avec PHP4 et PHP5

J’ai juste eu un petit problème de gestion de charset (code de caractère) pour lui faire accepter de l’UTF-8 en entrée. Problème vite résolu en allant fouiller dans le code du plugin wordpress post2pdf et en réutilisant sa fonction convert2iso.

Lien : FPDF

TimThumb, script php pour la génération de vignettes

TimThumb est un petit script php bien pratique qui permet de retailler à la volée des images.
Cela permet notamment de faire des vignettes (thubnails) assez facilement.
Il supporte les images de type jpeg, gif et png, il fonctionne avec GD Lib et php à partir de la version 4.3.

Concrètement comme fonctionne-t-il?
Tout simplement en lieu et place de l’appel à votre balise image habituelle sur votre site ou dans votre application php
<img src="monimage.jpg" />
remplacez par
<img src="/scripts/timthumb.php?src=monimage.jpg&h=150&w=150&zc=1" />
h pour la hauteur désirée, w pour la largeur désirée et z 1 si vous souhaitez utiliser le zoom, 0 sinon.

TimThumb ira automatiquement lire le fichier image, le retailler aux dimensions voulues et mettre le fichier en cache (afin de ne pas refaire le même traitement à chaque fois) puis afficher votre fichier. Tout cela de façon transparente.

More >

SimpleXML chez 1and1

Envie de manipuler un peu de XML facilement avec SimpleXML en php, mais vous êtes hébergé en mutualisé chez 1and1.fr et vos scripts refusent de fonctionner… des interdictions dans tous les sens, des fonctions non prises en charges, l’impression d’être attaché avec des menottes dans le dos?

Voici la petite procédure à suivre:

D’abord il est probable que votre hébergement soit encore en php4 par défaut alors que php5 est installé. Or SimpleXML est une composante de php5.
Pour activer le support de php5, placer un fichier .htaccess dans votre dossier (où à la racine de votre site) avec dedans:
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

Cela permet d’activer l’interpréteur php5 pour les fichiers php.

Puis on se rend compte que la fonction simplexml_load_file a été désactivée car « la directive allow_url_fopen est sur Off dans la configuration de PHP ».
C’est bien dommage car cette fonction est très efficace pour charger un fichier xml en tant qu’objet xml. La FAQ de 1and1 conseille plutôt d’utiliser la fonction fsockopen (toute bridée) et implicitement de passer par simplexml_load_string ensuite. Ils donnent même un exemple bien poussif pour utiliser fsockopen chez 1and1. Il n’en reste que cette solution est bien trop lente et surtout bien trop lourde (en testant leur solution, charger un fichier xml en objet est à vue d’oeil 50 fois plus lent que par simplexml_load_file).
On va donc faire fit de cette solution et activer la directive allow_url_fopen = On. Il suffit pour cela d’ajouter un fichier php.ini dans le répertoire où s’exécutent vos scripts en mettant dedans la ligne
allow_url_fopen = On

Ainsi il est possible de charger un fichier distant avec simplexml_load_file.

Recommandations:
- Veillez à bien sécuriser vos scripts afin que l’on ne puisse utiliser à votre insu cette fonctionnalité pour charger du contenu ou des scripts.
- Et puis veillez à optimiser vos scripts pour qu’ils soient efficaces et qu’ils consomment le moins de ressources possible afin de ne pas vous faire taper sur les doigts (coupure du site, mise sur un serveur poubelle) par 1and1.