Author Archives: Olivier

Testons nos variables (les expressions régulières)…

J’ai abordé le sujet dans mon précédent billet. Les expressions régulières ou rationnelles sont puissantes et rapides, une fois qu’elles sont maitrisés. En PHP, il existe deux types d’expressions régulières :

  • les POSIX
  • les PCRE (Perl Compatible Regular Expressions)

C’est le second type qui est le plus performant mais plutôt que de faire un long laïus dessus, je propose de lire ce tutoriel qui les explique très clairement : Les expressions régulières PCRE (Perl Compatible Regular Expressions).

Les expressions régulières me permettent de tester les variables qui proviennent de formulaires en POST ou en GET, tout particulièrement lorsque ces dernières vont “attaquer” ensuite une base de donnée. Cela évite tout problème d’injection SQL. J’ai, par ailleurs, mis en place une librairie avec différents types de données (nom, prénom, titre, email, ville, etc…) que je réutilise pour valider les informations récoltées.

Je n’ai pas, pour le moment, trouvé de meilleure solution pour tester des variables que les expressions régulières. Pourquoi m’en priverais-je si elles sont en plus performantes ? 😉

Les bienfaits des tests de variable en PHP

J’ai fait ce billet pour deux raisons principales :

  1. avoir un coup de gueule auprès des personnes qui ne sont pas capable de mettre en place leur test de variables
  2. montrer quelques exemples simples pour éviter des erreurs Notice ou Warning en PHP.

Avant tout, la première chose à faire est d’effectuer ses développements avec le niveau le plus haut d’erreur E_ALL. Très souvent cela indique énormément d’erreur mais la contre partie est que l’on aura par la suite moins de problème d’erreur et de compréhension au niveau du code.

Premier exemple que je rencontre très régulièrement : la non initialisation d’une clé d’un tableau. Ce type d’erreur se voit par un Notice :

Notice: Undefined index ‘champ’ in ‘fichier.php’ on line 10

Ce type d’erreur est très simple à corriger. J’utilise pour ma part la fonction isset(). Cela donne le bout de code suivant :

if (isset($tableau['champ'])) {
traitement normal
} else {
on assigne une valeur par défaut

}

On peut appliquer le même type de traitement pour les données des variables $_GET, $_POST, …

Le second exemple concerne plus la sécurisation des données venant provenant des formulaires et / ou URL pour valider en utilisant les expressions régulières. Mais ce second exemple fera l’objet d’un prochain billet.

Industrialisation des développements, ça marche…

J’ai participé à une conférence mardi dernier organisé par Bull, dans le cadre des Mornings du Libre. Deux conférenciers au programme :

  • Alban Henry, responsable avant-vente, pour Zend, nous présentant les différentes solutions proposés par Zend pour industrialiser les développements en PHP
  • Georges Hiraclides, de chez Bull, nous présenta pour sa part : NovaForge, leur usine de développement logiciel.

Pour faire un résumé de NovaForge, j’utiliserais le terme d’agrégateur d’outils de gestion de projet dans le cadre d’une industrialisation globale des processus. En effet, ce dernier regroupe :

  • des outils de Knowledge Management (wiki, forums, etc…)
  • des outils de reporting projet ou de pilotage du macro au micro pour permettre à tous les intervenants d’avoir la meilleure vision possible
  • des outils de développements
  • des outils d’intégration et de test
  • des outils de référentiel : bibliothèque de librairies, bonnes pratiques etc…

Pour le moment accès sur les développements en Java, la version PHP sera prochainement disponible.

C’est la raison pour laquelle Zend était également présent à cette conférence. Alban Henry nous a présenté les différents logiciels et contribution :

  • Zend Engine (le moteur PHP),
  • Zend Framework (l’un des Frameworks PHP les plus populaires)
  • Zend Core : un package stable contenant l’ensemble des librairies et serveurs pour l’utilisation de PHP
  • Zend Studio : l’IDE
  • Zend Platform: l’applicatif côté serveur pour le debug, le reporting…
  • Zend Guard : pour protéger les sources.

Bref tout un panel d’outils permettant d’industrialiser les développements.

Ce que je retiendrais de cette conférence, c’est surtout que toutes les sociétés qui sont passés dans un mode “Industrialisation des développements” a vu ses performances accrus et ses coûts réduits avec un gain de qualité… Je prêchais déjà la bonne parole, je vais continuer à le faire…

NB : je suis reparti de cette conférence avec quelques goodies (stylo, tapis de souris…) mais également avec un Livre Blanc intitulé : Les forces Logicielles, vers la révolution industrielle des développements applicatifs. Je vous en parlerais dans un prochain billet.

Sécurité et PHP

Et voilà, je viens de terminer ce livre, dont je parlais dans ce billet :

Sécurité PHP5 et MySQL

Accès sur PHP5, il peut également être appliqué à PHP4 (encore présent sur certaines plateformes). Côté base de donnée, c’est bien entendu MySQL qui est ciblé, cependant les différentes méthodes appliquées pourraient être transposés avec d’autres bases de données (Oracle, PostgreSQL…).

Mon impression générale est excellente, je ne suis pas déçu de l’investissement. Certains des points abordés m’ont permis :

  • soit de confirmer les méthodes que j’avais mis en place lors de mes précédents développements
  • soit de me permettre ultérieurement d’améliorer la sécurité de mon code.

Le livre m’a également permettre de mettre à jour des méthodes de “piratages” de site que je ne connaissais ou pensais presque impossible à mettre en place. Bref, un livre a posséder absolument !

Prochain livre “technique”, le pavé PHP5 Avancé

Fin de Netscape, démarrage de Internet Explorer 8

Netscape a tiré sa révérence ce mois de Février dernier. On se rappelera de Netscape comme étant le premier navigateur à avoir vulgarisé le web (au niveau de son utilisation). Le projet a démarré en 1994. C’est également grâce à Netscape que le Javascript était né. On retiendra également sa mort progressive avec l’arrivée massive et écrasante (dû à son installation par défaut sur les ordinateurs) du navigateur Internet Explorer de Microsoft.

Racheté plusieurs milliards de dollars par AOL, Netscape n’a alors jamais réussi à remonter la pente. Mais ces “fondateurs” ont migré vers la fondation Mozilla et plus précisément vers le développement de Firefox, l’outsider actuel d’Internet Explorer. La dernière version de Netscape est la 9.0.0.6.

Mais à peine la fin de Netscape, que l’on parle chez l’éditeur de Richmond (Microsoft) de la prochaine mouture d’Internet Explorer : la version 8. Enfin, on parle, on devrais plutôt dire que les tests sont en train de démarrer, la beta 1 est disponible aux abonnées de la MSDN. Cette version contiendra 2 moteurs afin de gérer progressivement la bascule entre le HTML4/(x)HTML et le HTML5/CSS2.1/XHTML1.1 (cf mon précédent billet). Lors de l’affichage des pages, l’application choisira le moteur adapté en fonction de la page.

Mon avis personnel est l’attente d’un navigateur made in Microsoft réellement fidèle aux recommandations du W3C. Ceci afin de ne pas rencontrer à nouveau les problèmes que l’on a toujours avec IE6. En revanche, je salue Microsoft de permettre une migration progressive des sites vers les futurs standards.

J’attends donc les retours de la fondation Mozilla (qui prépare dans l’année la sortie de Firefox 3) et d’Opera.