Connexion

php

plugin WordPress 2.5 pour élargir l’espace d’admin à 100%

Dimanche 30 mars 2008

Wordpress 2.5 est là.
A part l’éloge que fait le blog officiel sur les nouvelles fonctions, perso j’y voit rien. Les fonctionnalités qui aurait du être changées ne l’ont pas été. Et au lieu de ça, on se retrouve avec des trucs inutiles comme l’upload en flash, les gallery, les fausses vignettes personnalisables, les catégories de lien (blogroll), une admin soit disant repensée pour l’utilisateur (alors qu’on se tape toujours 2 click couteux pour manager les pages ou encore les spam).

En attendant j’attend toujours de pouvoir assigner un post à la catégorie que je veux lorsque j’en ai plusieurs. Néanmoins vu le code, beaucoup de bugs on été enfin résolu et ça c’est pas trop tôt. On va peut-être pouvoir partir sur une base presque propre.

l’espace blanc inutile de l’administrationLe premier problème qui m’a choqué c’est la largeur réduite de l’administration.

Nom de diou je sais bien que la mobilité est à la mode mais faut pas abuser !

Je sais pas si c’est parce que la majorité a opté pour l’un de ces LCD foireux avec moins de pixelx que mon minitel, ou bien s’ils sont tellement en manque de tunes qu’ils travaillent sur des EEE PC. En tout cas moi je n’ai rien de tout ça et je m’en réjouit :)
Et vu que j’ai 1920 beaux pixels de largeur, je veux en profiter !

C’est pourquoi je diffuse mon premier plugin pour wordpress. Simple rapide éfficace, pour ne pas dire con. Ma grand mère aurait presque pu en faire autant mais l’éfficacité est là. Il va vous permettre d’y voir plus large que le bout de votre nez :D

Download WordPress Plugin Admin Big Width : Enlarge your admin

bug php 5.2 open_basedir upload_tmp_dir

Mardi 29 janvier 2008

Si la directive upload_tmp_dir du php.ini n’est pas renseigné et que vous utilisé open_basedir, vous ne pourrez pas uploader de fichier.

PHP prendra la valeur par defaut du système à la place de upload_tmp_dir (soit /tmp sur debian) mais même si vous incluez le répertoire dans la directive open_basedir, PHP en interdira l’accès.

Il vous faudra donc obligatoirement assigner upload_tmp_dir, même avec la valeur par defaut du système.

exemple (la variable d’environnement TMPDIR vaut ‘/tmp’ : chemin par defaut pour les fichier temporaire) :
# ne marchera pas
open_basedir = '/tmp/:/un/autre/chemin/'

# marchera
open_basedir = '/tmp/:/un/autre/chemin/'
upload_tmp_dir = '/tmp'

créer un GIF animé en PHP

Lundi 2 juillet 2007

Après de nombreuses recherches infructueuses sur google, je me suis finallement tourné vers exalead pour trouver comment créer un GIF animé à partir de plusieurs images GIF en php.

Lire la suite

compression des archives tar, gz et zip avec php

Vendredi 22 juin 2007

J’ai cherché un moment avant de trouvé cette magnifique librairie disponible aussi bien pour php4 et php5 qui permet de compresser et de décompresser des fichiers tar, tar.gz, gz, et zip!

PhpZip

Le point fort ? Cet ensemble de classes ne nécéssite aucune extension exepté zlib qui est présent sur 95% des hébergements mutualisés. Ce n’est pas le cas des autres librairies, la plupart sont des extensions PECL ou pire encore…

Niveau perfomance, il est clair qu’on est loin de l’éxécution des PECL. Néanmoins, c’est acceptable, et cela rendra bien des services !

apache, php4 et php5

Mercredi 21 mars 2007

Installer apache2 se relève relativement simple même si personnellement je n’aime pas trop le système d’administration (module available, fichiers de site etc..). Je préfère avoir tout à un endroit plutôt que de devoir aller chercher le php.ini au fin fond de mon système et de revenir dans le httpd.conf etc…

En même temps j”aurais pu installer une solution toute faite comme XAMP mais au fond j’aime bien que les choses deviennent compliquées, ça me fait du bien de les dresser :D Me voila donc avec tout mes paquets apache2 et php5 installé et la je me dit il me faut php4 quand même. Il est vieux, soit, mais encore trop répandu pour être laissé à l’abandon.

Plusieurs solutions s’offrent à moi :

  • j’installe apache et je le lance avec 2 instance sur un port différents et sur chacune un mod php différents,
  • je lance php4 ou php5 en mode cgi et l’autre comme module apache. Et suivant l’extension du fichier ou en ajoutant un htaccess, je règlerais quelle version php je veux utiliser

Je choisi la deuxième solution pour des raisons de performance et de simplicité. Ben oui avoir deux instance d’Apache qui tourne moi ça m’inspire pas, et encore moins mon portable.


Lire la suite

le mois des bug php

Lundi 19 mars 2007

Comme vous le savez déjà surement, mars est “the Month of PHP Bugs”.

the Month of PHP Bugs Petit résumé pour ceux qui n’ont pas suivi l’affaire : Stefan Esser, fondateur de la PHP Security Response Team, a démissionner de son poste il y a plus d’un moi. Il estime que les failles de php ne sont pas correctement traitées dans l’ordre d’importance par l’équipe. Il a subi des critiques provenant de l’équipe du PHP Group qui lui repprochait de trop diffusé les failles découvertes. Donc depuis la mi-fevrier environ, il s’écarte de cette équipe qu’il trouve obsolète, pour montrer indépendamment à quel point il existe des failles dans PHP.

Il espère ainsi sensibiliser les developpeurs tout en faisant bouger cette équipe PHP inconsciente et trop fier d’elle.

Par le biais de php-security.org, il a l’intention de fournir plus d’une faille PHP par jour pendant un mois. Et on peut dire qu’il s’en sort plutôt bien : depuis le 1er mars, 26 failles ont été ressencées, mais certaines ne sont pas a inclure dans le décompte car récemment mis à jour ou dépendantes de modules non inclus par defaut.

je vous conseil donc de regarder attentivement les fonctions succeptibles de créer des failles et de modifier vos code en fonction.

domxml et php5

Lundi 19 février 2007

je voulais formatter des données xml à l’aide d’une feuille de style xsl lorsque je me suis aperçu que même en suivant à la lettre les exemples de php.net, la class DOMDocument me retournait une erreur :

$xml = DOMDocument();

// retourne l’erreur :
// domdocument() expects at least 1 parameter, 0 given

J’ai éssayé sur un serveur distant… tout marche !!!

Alors en vérité, c’est une question de version. En php4, on utilise l’extension domxml, et en php5 l’extension DOM.
Seulement domxml n’est pas compatible avec DOM. Il est donc déconseillé d’inclure l’extension domxml en php5 car les fonctions sont surchargé.

Comme mon serveur local est en php5, il fallait simplement enlever php_domxml du php.ini.

Si vous voulez transformer vos script de php4 à php5, vous pouvez toujours inclure l’extension domxml/php5 sachant que vous ne pourrez plus utiliser l’extension DOM. Cela dit, je vous conseille plutôt de passer de domxml/php4 à dom/php5.

filtre html en PHP

Mardi 13 février 2007

cela faisait longtemps que je cherchais un bon filter de syntaxe HTML en PHP pour pouvoir enfin proposé au posteur d’écrire les commentaires en HTML pure.

Tout le monde jusqu’alors à dérivé cette problèmatique. Entre le BBcode, le wikitext (mainte fois reproduit), le Textile, le zcode (bbcode avec des > <) on est bien loin de la simplicité, des normes et du potentiel du language HTML. Par contre niveau sécurité, c’est sur qu’on est tranquille vu qu’on peut pas faire grand chose :)

Comme l’a dit Einstein :
Une personne intelligente résout un problème. Une personne sage l’évite.

Il faut croire qu’on est rentré dans l’air de l’intelligence :D , voici HTML Purifier

Attention, HTML purifier n’est pas un filtre batard, la syntax HTML qui ressort est valider par le W3C.
On est bien loin des anciens filtres comme PHP Input Filter (franchement limité), kses (mais où est le site officiel ?), le package PEAR HTML_Safe… etc
Ici c’est de l’or en barre, mais l’or ça pèse lourd. Je doute que les applications qui l’utiliseront filtreront les posts avant chaque affichage comme c’est le cas actuellement (punbb, IPB…).

C’est gourmand, mais éfficace. Bien entendu, HTMLPurifier peut vous enlever les interaction javascript (qui pourrais provoquer des failles XSS). Tout est entièrement parametrable, restreindre un attribut, une classe CSS, empècher l’application d’un paramètre CSS, enlever les liens ou les images avec des URL externe, tout ce qu’on pouvait en attendre !!! Un petit plus, il parse aussi dans l’encodage que l’on veut !!! vraiment magnifique.

Le projet est tout jeune, il reste quelques améliorations à faire mais on en parle de plus en plus. Je suis encore en phase de teste mais ça parait TRES prometteur et peut-être qu’enfin on pourra offrir des interfaces WYSIWYG dans les forums et les blogs :)

réducteur/obscurateur/encodeur de javascript

Jeudi 8 février 2007

Si vous voulez mettre en ligne vos lourds et gros code javascript, la moindre des choses seraient de les réduires afin que le temps de chargement de ceux-ci soient minimum.

Je ne saurais donc trop vous conseiller cet outil en PHP : javascript-packer

A la base disponible en javascript sur le site de Dean Edwards, qui, on peut le dire est l’inspirateur du framework Prototype, cet outil a été developpé en plusieurs autre languages: .NET, python, Perl et meme en Ruby. bizarrement, aussi en WSH (une sorte de javascript en ligne de commande pour Windows)

Vous me direz il en existe surement beaucoup des outils comme ça… oui seulement il ne font pas tous le boulot très bien.
La différence réside dans la prise en compte ou non des pre-incrémentation et post-incrémentation :

var a = 2;
var b = 3;
var c = b + ++a; //c = 3 + 3 = 6; a= 2 + 1 = 3; b = 3;

La pluspart des outils enlève betements les espaces, on obtient donc :

var a=2;var b=3;var c=b+++a;

ici le compilateur comprendra :

var a = 2;
var b = 3;
var c = b++ +a; //c = 3 + 2 = 6; a= 2; b = 3 + 1 = 4;

ce qui fait une certaine différence…

De plus il vous offre la possibilité de compresser votre code si vous avez vraiment quelque chose de gros à éxécuter.

L’auteur travaille actuellement sur une version d’obsucuration des variables non-globale ce qui permettrais de réduire encore plus la taille.

wordpress syntax hightlight

Mercredi 24 janvier 2007

Comme certain ont pu le voir, en faisant la mise à jour vers wordpress 2.1.0, j’ai ajouter la coloration syntaxique à ce blog.

Cela a été possible en ajoutant un très bon plugin nommé Dean’s Code Highlighter

Cependant, pour ceux qui auraient envie de l’installer voici une petite modification permettant de prendre en compte le style du header (.head) qui est défini dans le css mais non utilisé.
j’ai rajouter dans le fichier geshi.php :

//à la ligne 2443 remplacez :
if ($this->use_classes) {
  $attr = ‘ class="head"’;
} else {
  $attr = " style=\"{$this->header_content_style}\"";
}

// par :
if ($this->use_classes || empty($this->header_content_style)) {
  $attr = ‘ class="head"’;
} else {
  $attr = " style=\"{$this->header_content_style}\"";
}

je vous conseille également de supprimer toutes les class css modifiant le comportement de la balise <code> qui apparement à une relation directe avec la balise <pre>