php

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 proposer aux posteurs d’écrire les commentaires en HTML pure.

Tout le monde jusqu’alors a 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 😀 , 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 efficace. Bien entendu, HTMLPurifier peut vous enlever les interactions javascript (qui pourrais provoquer des failles XSS). Tout est entièrement paramètrable, 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 test 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.

Update : j’ai créé le mien 😉 jsxs

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>

railto framework ajax

mardi 5 décembre 2006

je viens de découvrir Railto, un framework ajax qui permet de faire de très jolies choses (allez voir la section demo).

Ce framework est compatible uniquement IE 6.x/7.x et FF 1.x, comptez pas y allez avec opera…
Il fournie un code JS ainsi qu’un code serveur en PHP JSP Python .Net … bref beaucoup d’implémentations serveur.
Tout ça à l’air super! on dirait que c’est entièrement géré par coordonnée à l’écran, vous placez vos fenètre vos composant etc comme vous voulez!
Assez de widgets son implémentés pour en faire presque ce que vous voulez, et vous pouvez toujours changer les skins par défaut si vous les trouvés laid.

Seulement… allez pas piochez dans le code… illisible. c’est bourré de tab qui sont pas au bonne endroit, des fonctions à X paramètres inconnus, c’est lourd c’est gros.
D’ailleurs rien que le core javascript fait 500 Ko… 1/2 Mo à charger par vos visiteurs avant de voir apparaitre quoi que se soit… sans compter se que vous avez ajouté… si encore il y avait une bonne doc mais euh… où elle est ?? 500 Ko de code et 5 tuto tous aussi sombre que mon troue de balle!

Allez hop, à la corbeille, j’irai le rechercher quand tout ça aura évolué en doc et diminué en taille, autrement dire, j’ai peur que je puisse y recycler direct.

–EDIT–
allez je rectifie, en fait il le disent eux même que c’est trop lourd pour être exploité dans un site web entier :
FAQ Rialto

compilateur-encoder php : alternative à zend guard ?

vendredi 1 décembre 2006

En voyant le prix de la version de Zend Guard anciennement Zend Encoder qui avoisinne les 1000$ certain ce sont lancé dans un projet open-source permettant une alternative gratuit pour interdire la lecture du code source dans des fichier php mais en fait surtout pour accélérer l’éxécution des script.

E-Accelerator a les même fonctions que zend guard. Et pour dire, anciennement cela s’appelait Turck MMCache seulement son fondateur s’est fait embaucher par zend 🙂
A l’époque ce freeware créait des opcode : non pas des bytecode mais pas loin. En gros ça évite au moteur de zend dans php de reparser le code mais il le compil quand même. On peut dire que c’est une pré-compilation.Toujours à l’époque, c’était encore plus optimisé que zend encoder.

Maintenant le projet a été repris par 2 dévellopeurs (Bart Vanbrabrant (belge), Hans Rakers (Allemand)). Leur principale pré-occupation est l’accélération de code malheureusement.
Je dis malheureusement parce que j’aurais bien aimé trouver un encodeur fiable et pas non plus avec un prix exorbitant. Il y a des codes-source qu’on aimerait cacher parce qu’on à pas envie que quelqu’un d’autre s’attribut la découverte d’une méthode mais qu’on aimerait quand même diffuser sans frais. Et on a donc pas l’ambition de se payer la licence zend guard…

Apparement et remalheureusement, en lisant un ticket sur le site de E-Accelerator, on dirait bien qu’ils vont totalement retirer la fonction d’encodage du programme pour l’instant… 🙁

Mise a jour 2009-08-29 :
Un petit retour d’expérience sur l’encodage de php : vous pouvez maintenant utiliser bcompiler.
Ce petit module php vous permettra de compiler vos script en bytecode php (opcode). Mais attention il est encore en version Beta, et il vous faudra respecter la compatibilité entre la version du bytecode et la version de l’extension. A part ça pas de problème 😀

Maintenant si vous voulez quelque chose de plus poussez je vous conseille Ioncube. Pour moins de 200$ vous pouvez encoder proprement votre code, et l’installation du decoder sur le serveur est bien plus aisé que Zend Guard. A ce prix la vous n’avez pas toutes les fonctionnalités d’encodage mais c’est un bon début et pour 5 fois moins cher que Zend… Cerise sur le gateau pour les petits budgets, Ioncube propose pour quelques dollars d’encoder vos fichier en ligne !

Eclipse et PHP

mardi 10 octobre 2006

Depuis que le projet Eclipse a démarré, il a fait du chemin.
A la base devellopper pour créer des applications java, sa protabilité fut tel qu’une multitude de plug-ins se sont créer permettant de develloper sous divers languages avec des assistants utilisateurs qui vont parfois bien au-dela de certain éditeurs payant.

Et parmis ses plug-ins on retrouve bien entendu PHPEclipse, permettant l’intégration du PHP. Celui-ci inclus:
– la coloration du code (paramètrable)
– la gestion des class, des variables, en tenant compte des fichiers inclut (via include ou require par exemple)
– un débugger syntaxique avancé (avec reconnaissance des variables)
– l’implémentaion des définitions/commentaires de type PEAR
– la reconnaissance du système de template smarty
– les bulles d’aides des fonctions natives php ET de vos fonctions avec votre définition si il y a.
– l’implémentaion d’un navigateur DANS l’envirronnement Eclipse afin de générer les page via votre serveur (local ou internet)

La synchronisation CVS est inclu dans Eclipse. Seul point noir en cour de develloppement, la synchronisation FTP se fait à l’aide d’un autre plug-in (FTP & WebDAV) mais j’ai des erreurs de connection 4 fois sur 5 sur la plupart des serveurs.. J’attend avec impatience la mise à jour.

En complément de ceci, et comme si ça ne suffisait pas, IBM a soumis un plug-in permettant l’implémentaion total d’AJAX basé sur des framework existants (Dojo, Open Rico) et implémentant des adaptations pour les environnements J2EE/JSP et Apache/PHP: L’ATF (AJAX Toolkit Framework) est encore en cour develloppement mais vous pouvez déjà vous procurer les versions beta. Imaginer le bonheur de pouvoir débugger ses codes javascript correctement, regardez les vidéos pour baver un peu.

Eclipse est donc très prometteur et deviendra surement l’éditeur favoris de nombreux develloppeur dans un avenir proche.
Ai-je besion de vous rapeler sa gratuité ?
Dreamweaver n’a qu’a bien se tenir.

— EDIT —
Finalement la synchronisation FTP marche très bien! Je suppose que l’erreur était du à la récente installation du plug-in… cela dit ne compter pas vous connecter sur les serveur FTP de free vu leur timeout exessivement bas 🙁
Pour effectuer une synchronisation affichez la vue « synchronisation de l’équipe », ça vous paraitra plus clair 🙂
Allez quelques fonctionnalités de plus pour vous faire baver :
– visualisation des fichiers modifiés seulement (sur ftp ou sur local)
– comparaison diff avec éditeur intégré (vous savez, celui que dreamweaver n’intègre pas)
– intégration d’un mode de conflit si une nouvel version du fichier à été up sur le serveur pendant que vous travailler sur l’ancienne
Bon ben voila les autre éditeur peuvent tous allez se cacher, s’enterrer même.
Eclipse c’est de la balle 😀

comparer les différences entre fichiers

jeudi 5 octobre 2006

En créant un projet de subversion en php, je me suis rendu compte qu’il était assez dure d’afficher clairement les différences entre 2 fichiers sous php…

Quelques sources de class php sont fournies sur la toile seulement elle sont bien souvent trop gourmande et possèdent trop de bug pour pouvoir les utilisées correctement.

C’est pourquoi la commande diff sous linux existe et vous permet de faire cela dans un shell via la functioon php shell_exec ou encore grace aux guillemets obliques.

Vous n’aurez alors qu’a exécuté la commande suivante:

diff -u fichier1 fichier2

qui vous retournera quelque chose comme :

--- fichier1   2006-10-05 01:19:52.000000000 +0200
+++ fichier2   2006-10-05 01:14:20.000000000 +0200
@@ -1,7 +1,12 @@
 ablabla
+ablablaablablaabla
 ablablaablabla
-www
-ablablaablablaablabla
-abb
+ablablaablablaabla
+ablablaablablaabla
+ablablaablablaabla
+ablablaablablaabla
+ablabl
+ablablaablablaabla
+ablablaablablaabla
 ablabla
 test
\ Pas de fin de ligne à la fin du fichier.

Il ne restera plus qu’a parser le résultat.
Plusieurs options pour diff son disponibles: man diff
Voyez aussi diff3 qui permet de comparer 3 fichiers en même temps, et sdiff pour une représentation ligne-à-ligne (side-by-side).

template php

lundi 18 septembre 2006

Comme beaucoup de webmaster, vous serez un jour amené à vouloir utilisé un système de template pour votre site, non seulement pour permettre la portabilité mais aussi pour le système de cache que beaucoup d’entre eux intègre.

Et comme moi, un jour, vous chercherez un comparatifs des différents systèmes de templates existant. 🙂

En voici un, certainement incomplet car le monde libre est infini : comparatif template php

Pour ma part j’ai adopté smarty pour des utilisations poussé. Mais vous n’aurez certainement pas besoin de toutes ses fonctions, si tel est le cas, penchez vous sur PHPlib, système simple mais rapide.

OVH *.php -> php5

lundi 31 juillet 2006

enfin OVH propose du php5 pour tout les scripts inscrit en *.php depuis peu de temps.

Pour cela, il suffit juste d’inclure un .htaccess avec à l’intérieur :
SetEnv PHP_VER 5
(source)

Je rectifie donc ma critique, OVH devient vient donc en concurrence avec 1and1 surtout que OVH fournie un espace sécurisé en https pour votre site (sous la forme « https://sllx.ovh.net/~votresite/ ») ce qui est non-négligeable.

Pour arriver à doubler 1&1 il faut encore qu’ils évitent les coupures de serveurs produites dernièrement et tout sera parfait.