Toute l'actualité francophone sur PHP en un seul flux

Septembre 2007 – Kamelot Blog: Sécuriser un code pourri.

On voit de plus plus de règles particulières pour sécuriser un code. Des bons conseils ou bonnes pratiques mais qui demandent un travail énorme.

Il y a 2 ans, Claroline commençait à être la cible de pirates. Il fallait faire quelque chose.

Bien sûr tout changer d'un coup allait prendre du temps. Plus un code est chaotique plus la tâche est ardue.

Voilà quelques recettes pour retravailler le code.

Tâche 1 : register_global à off

Premier boulot de fou.

Si le code à été écrit pour un register_global ON il faut fouiller le code pour trouver les variables utilisées "en espérant" qu'elles ont été initialisées par register_global.

On va les traquer et les remplacer par des $_REQUEST.

Pourquoi $_REQUEST ? il y a $_POST, $_GET, $_COOKIES ... dans tout les cas ces valeurs sont suspectes autant utiliser $_REQUEST qui vous donnera celle qui gagne selon les règles de priorité que vous aviez pour le register global. Note : Tout le monde n'est pas de cet avis. L'argument des autres est qu'il faut aussi maîtriser d'où vient l'information. Pour moi elle ne vient que d'un endroit, un endroit douteux.

Un truc pourri c'est d'utiliser un extract de $GLOBALS mais ce qui n'est que contourner le problème.

Pire c'est masquer le problème.

Une solution pour travailler en transition c'est de mettre le serveur en register global à off et à la racine un .htaccess qui dit register global à on.

là on a rien corrigé. mais on peut commencer et progressivement modifier le htaccès pour faire porter le global ON au de moins en moins de script jusqu'a en avoir fini avec lui.

Septembre 2007 – z-f.fr: Trafic de www.z-f.fr

Forum: Brèves
Auteur: philippe
Écrit le: Mon, 03 Sep 2007 10:49:32 +0200
Dernier message: Wed, 05 Sep 2007 12:04:13 +0200

Septembre 2007 – PHP Index: Forum Orionv2.4.3, un phpBB prémodé tout en couleur

Depuis bientôt un an déjà, le forum Orion fait ses premiers pas, doucement , gentillement mais surement.

Outre que le concept est déjà bien connu, cette compilation basée sur un forum de type phpBB 2.0.22 est livrée avec une quantité de mods non négligeable et d'excellente qualité.
Produit et livré par www.Cback.de, le forum Orion ne renie pas ses origines allemandes, signe de très bonne qualité comme nous pouvons le constater dans la plupart des cas.

D'une sécurité exemplaire, Orion vous en ferait même oublier que dessous se cache un phpBB ( et c'est vrai ), beaucoup d'ajax en simplifie la gestion et l'approche, ainsi que des utilitaires réellement indispensables.
Le tout fait de ce phpBB prémodé une référence actuelle en matière de forum phpbb compilé de la sorte.

Ce jour est livré la version 2.4.3 française comprenant de nouveaux additifs de sécurité ainsi que des correctifs dits de maintenance.

Si vous hésitiez encore pour votre projet, et/ou futur projet, sachez qu'Orion est à forum à prendre en compte dans votre choix.

Nécessite le couple PHP/MySQL pour fonctionner !

Nota: le forum Orion est basé essentiellement sur la sécurité et la facilité de gestion d'un site internet, regroupant portail, téléchargement, faq, base de connaissance, calendrier, galerie ...

Support et renseignements sur www.phpbb-premod.com

Proposé par Cyril Levert

Septembre 2007 – PHP Québec: CodeFest PHP Québec 2007







L'équipe de PHP Québec est fier de s'associer avec High-Touch Communications afin de vous présenter le codeFest PHP Québec 2007.

Le CodeFest PHP Québec:
À pour objectif principal est de faire participer les membres de la communauté PHP Québécoise au développement d'applications OpenSource, afin de démontrer le dynamisme de la communauté au Québec. Lors de cette première éditions, nous intégrerons le support OpenID.




OpenID :
Est un système d'authentification décentralisé qui permet l'authentification unique, ainsi que le partage d’attributs. Il permet à un utilisateur de s’authentifier auprès de plusieurs sites sans avoir à retenir un identifiant pour chacun d’eux mais en utilisant à chaque fois un unique identifiant OpenID. Le modèle OpenID se base sur des liens de confiance préalablement établis entre les fournisseurs de services (sites web utilisant OpenID par exemple) et les fournisseurs d’identité (OpenID providers).
Source : Wikipedia
http://fr.wikipedia.org/wiki/OpenID

Les Projets:
BeWelcome: lead Morgan Tucker
Habari: lead Andrew da Silva
TikiWiki: lead Marc Laporte
WifiDog: Evan Prodromou
Xoops : Lead Marc André Lanciault

Logis:
Nous invitons les gens de l'extérieur qui non pas d'endroit où rester pour la fin de semaine à visitez le site bewelcome.org
Avec ce site vous trouverez sans doute quelque personne qui vous laisseront faire du couch surfing à Montréal.

Lieu:
Le codeFest ce déroulera sur la terrasse du Pub 100 génie.

Lieu : École de technologie supérieure
Salle : B1510
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html
Ville : Montreal

Horraire et Activité Connexes:
6 Septembre: Rencontre Mensuel PHP Québec:
En première parti, nous aurons une séance de questions réponses sur le développement web avec PHP. Apportez vos laptop et vos questions.

Nous poursuivrons avec une table ronde, afin d'identifier les solutions aux problèmes que nous risquons de rencontrer lors de l'intégration du support OpenID

Nous terminerons la soirée au 3 brasseurs sur St-Denis

Heure : 19h00
Lieu : École de technologie supérieure
Salle : B1510
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html
Ville : Montreal

7 Septembre: PHP Beer : Pub Ste-Helisabeth vers 6:00.
Si vous nous cherchez, appelez le 514-581-8497

8 & 9 septembre:
Arrivé au Pub 100 génie à 9:00
5 à 7 (commandité par HighTouch Communication et Conférence PHP Québec)
Fin de la journée à 20:00

Heure : 9h00
Lieu : École de technologie supérieure
Salle : Pub 100 Génie
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html
Ville : Montreal


Contact:
Vous faites partis de l'équipe de développement d'un outils qui bénéficierais du support OpenID? Vous aimeriez participer au développement de l'un des projet mentionner si haut?
Contactez nous
par email board@phpquebec.com
sur irc irc.freenode.net #codefest

Ceci est une bonne occasion pour venir découvrir Montréal!
Au plaisir de vous-y voir.

Veuillez confirmer votre présence sur upcoming

Septembre 2007 – PHP Index: MySQL 6.0.0 Alpha

La version alpha de MySQL 6.0.0 est disponible au téléchargement.

Cette version de MySQL, anciennement connue sous le nom de MySQL 5.2, apporte une unique nouveauté par rapport à la version 5.1 mais celle-ci n'est pas des moindre: il s'agit de l'intégration du nouveau moteur Falcon. En effet ce moteur transactionnel, qui vient rejoindre les classiques MyISAM et InnoDB sans les remplacer, devrait être plus performant sur les architectures matérielles récentes (64 bits), supporter les transaction ACID, et offrir un système de récupération des données en cas de crash.
Pour en savoir plus sur le moteur Falcon, je vous invite à visiter la FAQ correspondante sur le site de MySQL.

Rappelons tout de même qu'il s'agit là d'une version alpha, qui ne doit être utilisée que pour expérimenter le nouveau moteur de stockage Falcon.

MySQL 6.0

Septembre 2007 – PHP Index: PHPlist 2.10.5

La nouvelle version stable de ce système de publipostage en PHP est disponible depuis lundi.

Cette release n'apporte pas de réelle nouveauté, mais corrige près d'une trentaine de bogues de la version précédente.
Consultez le changelog pour plus d'information sur les corrections apportées.

Le site officiel

Septembre 2007 – PHP Index: PHP vs Ruby - Practical Language Differences

Le site Refreshinglyblue, propose une petite étude comparative de ces deux langages.

Si l'auteur commence par résumer les points communs entre PHP et Ruby, c'est pour mieux insister ensuite sur leurs différences.
Premièrement les frameworks: là ou Ruby se trouve très bien associé à Rails, PHP est lui doté d'une dizaine de frameworks aux qualités diverses, comme CakePHP ou Symphony, mais qui, d'après l'auteur, ne sont souvent pas aussi avancés que Rails, et n'offrent pas le même confort de développement.

Ensuite, l'article nous rappelle que Ruby supporte les espaces de noms, ce que PHP ne permet pas encore nativement, mais qu'il est beaucoup plus facile et économique d'héberger des applications PHP qui pourront être maintenues par FTP, quand les applications Ruby, elles, nécessiteront un hébergement plus onéreux et accessible en SSH. De même, pour tout ce qui concerne la documentation, celle offerte sur le site officiel PHP est plus claire, et plus fournie en exemples que celle de Rails.

L'auteur conclut néanmoins que, malgré les défaut de Ruby/Rails (notamment la complexité de l'hébergement), Ruby est l'un des language les plus expressifs et concis qu'il ait eu l'occasion d'utiliser, et que l'efficacité apportée par Rails pour Ruby, ne se retrouve actuellement pas dans les frameworks PHP.

PHP vs Ruby - Practical Language Differences

Septembre 2007 – Prendre un Café: Release Time (part one)

QOTD :

À trop procrastiner, on s'y casse le nez.

Bon, je suis en train de sortir des cartons tout ce que je n'ai pas encore releasé. Voici une première fournée, sous la forme de deux plugins pour le framework Symfony :

Ces plugins sont releasés sous licence MIT. Enjoy.

Bon, c'est pas fini, d'autres choses vont suivre très prochainement.

Septembre 2007 – Prendre un Café: Release Time (part one)

QOTD :

À trop procrastiner, on s'y casse le nez.

Bon, je suis en train de sortir des cartons tout ce que je n'ai pas encore releasé. Voici une première fournée, sous la forme de deux plugins pour le framework Symfony :

Ces plugins sont releasés sous licence MIT. Enjoy.

Bon, c'est pas fini, d'autres choses vont suivre très prochainement.

Septembre 2007 – PHP Index: ZDNet : Gestion de contenu : l'offre open source arrivée à maturité

Le site ZDNet nous propose un état des lieux des solutions de gestion de contenu les plus utilisées sur Internet.

Dans le domaine de la gestion de contenu, l'article fait tout d'abord la différence entre les solutions de type CMS (Content Management System) et les solutions ECM (Entreprise Content Management), ces dernières étant, comme leur nom l'indique, destinées tout particulièrement aux entreprises, leur offrant ainsi des systèmes de personnalisation de la structure même du contenu, et des fonctionnalités de gestion de workflow.

La grande majorité de ces outils sont écrits en PHP ou en java, mais l'article note que peu d'outils java sont à l'heure actuelle en "open-source", là ou leurs homologues écrits en PHP le sont presque tous. Néanmoins, ces outils java vont généralement bien plus loin dans l'ECM que les outils PHP, et entrent désormais en concurrence directe avec les outils des industriels du secteur comme Microsoft ou IBM.
En guise de conclusion, l'article fournit un petit comparatif rapide de différents outils de gestion de contenu.

Pour aller plus loin: le site 01net, a réalisé un dossier sur "bien choisir son CMS" dont nous vous parlions il y a peu.

L'article de ZDNet : Gestion de contenu : l'offre open source arrivée à maturité

Septembre 2007 – PHP Index: symfony 1.0.7

Publication hier du framework PHP symfony 1.0.7

La version 1.0.7 de symfony vient d'être publiée, celle-ci n'apporte rien de nouveau mais corrige de nombreuses anomalies liées au propel-dump-data.

Pour rappel symphony est un cadre d’application libre pour PHP5. Disponible depuis un an, ce framework a réussi à s’imposer comme une référence parmi la multitude de solutions disponibles pour ce langage. S’inspirant de Ruby on Rails, Symphony s’appuie sur une architecture de type Modèle-Vue-Contrôleur. Il implémente l’utilisation du langage de description YAML ainsi que l’Ajax.

Annonce

Septembre 2007 – z-f.fr: Nouvelle Roadmap du ZF

Forum: Brèves
Auteur: philippe
Écrit le: Fri, 07 Sep 2007 16:45:06 +0200
Dernier message: Fri, 07 Sep 2007 16:45:06 +0200

Septembre 2007 – tigrou/pwet.fr: Fetch eZ Publish content nodes in PHP

This short article is a reminder for me, I hope it will save me hours next time.

In a PHP script, to fetch content object nodes you can use eZContentObjectTreeNode::subtree or eZFunctionHandler::execute . The second is very practical because its syntax is similar to content fetch functions in templates . But there's one difference : when writing an attribute filter condition you have to put your condition array in another array even if there's only one condition. For example, in templates you can write :

{def $tree=fetch(content, tree, hash(parent_node_id, 2,
                      attribute_filter, array( 'name', 'like', '*ez publish*' ) ) )}

So, in a PHP script, I was thinking that I could write :

$tree = eZFunctionHandler::execute('content','tree', array('parent_node_id' => 2,
                      'attribute_filter' => array( 'name', 'like', '*ez publish*' ) ) );

But it does not work, you have to use this instead :

$tree = eZFunctionHandler::execute('content','tree', array('parent_node_id' => 2,
                      'attribute_filter' => array( array( 'name', 'like', '*ez publish*' ) ) ) );

In fact, in the documentation of the template fetch list function about attribute filtering (parameters for fetch list and fetch tree are mostly the same), you can read :

The "attribute_filter" parameter must be an array. The first element may be set to either "and" or "or" - this controls how the matching specified in the upcoming elements should be carried out. If this parameter is omitted, the system will default to "and". The rest of the elements are arrays, each array specifies a match.

So, the first and the second examples are not correct even if the first works in templates ! Damn, this took me almost 2 hours...

Septembre 2007 – PHP Index: DevZone Zend: tutorial Zend_Pdf

Un petit tutorial explique les fonctions de bases pour créer des fichiers PDF avec Zend framework.

Zend Framework est un framework PHP gratuit développé par la société Zend. Il a pour principal but d'accélérer le développement et de faciliter la maintenance d'application web. Parmi les fonctionnalités offertes par Zend Framework, vous avez la possibilité de manipuler des fichiers PDF grâce au module Zend_Pdf. Le tutorial proposé sur le site de Zend, vous propose de créer et d'enregistrer des documents et de manipuler du texte et des images à l'aide de ce module.

Tutorial

Septembre 2007 – PHP Index: SitePoint: Whip Up a Yahoo! Mashup Using PHP

Le site SitePoint propose un dossier pour découvrir l'univers du mashup, à travers des exemples concrets utilisant les possiblités offertes par Yahoo!.

Le terme de mashup, popularisé par l'arrivée du Web 2.0, désigne une application web que l'on pourrait qualifier d'hybride en ce sens qu'elle s'appuie sur d'autres sites, pour fournir un nouveau service. En effet certains sites mettent gratuitement des API (Application Programming Interface) à disposition des développeurs, leur permettant ainsi d'utiliser leurs services web pour créer un nouveau site. On sitera notamment Google, Yahoo, Flickr, ou Amazon, dont les services web sont régulièrement utilisés dans le cadre du mashup.

Le dossier de SitePoint offre une initiation à la création de mashup en PHP5, en prenant comme exemple l'utilisation des différents services web proposés par Yahoo!. On apprend ainsi à utiliser, pour son propre site, les services Yahoo! Search et Yahoo! Maps.

L'article : Whip Up a Yahoo! Mashup Using PHP

Septembre 2007 – PHP Index: VNUNet: un campus virtuel avec la solution libre Claroline

A noter sur VNuNet un article consacré à Claroline, la plate-forme Open Source de formation à distance et de travail collaboratif développée en PHP.

L'article détaille les fonctionnalités et possibilité de ce logiciel francophone et cite quelques références parmi lesquelles l'Université Paris VIII, les Écoles Centrales, l'Université d'Auvergne à Clermont-Ferrand, l'Université de Lille2, l'Université de Provence, Université Jean Monet à Saint-Etienne, etc.

Septembre 2007 – PHP Index: MySQL 5.0.48

La version 5.0.48 du serveur de base de données MySQL vient de sortir.

Cette version n'apporte pas de nouveautés, mais corrige de nombreux bugs. On notera que l'erreur d'auto_increment avec des tables de type InnoDB a été corrigée et l'ajout d'une option de démarrage du serveur, pour ne pas réécrire le fichier .MYD existant lors de la création d'une table de type MyISAM.

Changelog
Téléchargement

Septembre 2007 – z-f.fr: Utiliser Zend_Auth et Zend_Acl

Forum: Brèves
Auteur: philippe
Écrit le: Thu, 13 Sep 2007 08:57:03 +0200
Dernier message: Mon, 17 Sep 2007 10:10:59 +0200

Septembre 2007 – sahid.funraill.org: Apache2 rewrite_mod, mapping url

Installation du Rewrite Module pour Apache2 sous OpenSuSE

Introduction

Le Rewrite_mod pour apache ou la réécriture url est plutôt à la mode ces temps-ci, une des raisons les plus marquantes est le référencement, là ou les moteurs de recherche ont du mal à suivre des url exotiques comme “www.monsite.org/?page=mail&action=envoyer” l’utilisation du rewrite_mod coupler à un MVC (Model View Controler) (voir framework zend) en Php permet d’obtenir des url bien plus parlantes “www.monsite.org/mail/envoyer”

Installation du module: rewrite_mod

L’installation est en fait assez simple, il suffit d’ajouter la ligne “LoadModule rewrite_module /usr/lib64/apache2-prefork/mod_rewrite.so” dans le fichier de configuration des modules d’Apache2 pour OpenSuSE

Donc: En root (commande: su) on édite le fichier /etc/apache2/sysconfig.d/loadmodule.conf et on ajoute la ligne LoadModule rewrite_module /usr/lib64/apache2-prefork/mod_rewrite.so

Installation module rewrite-mod

Redemarrage d’ Apache2 : apache2ctl restart

Septembre 2007 – sahid.funraill.org: PHP SimpleXML une bref introduction

PHP un des meilleurs langages pour la manipulation de documents XML

Les documents XML sont de plus en plus utilisés que ce soit dans le monde du web, avec de nouveaux protocoles tels que l’AJAX, ou encore dans les logiciels. XML sert de base pour tout langage balisage.

Un document XML

  1. <livre>
  2.         <auteur>
  3.                 Laurent Eric1
  4.         </auteur>
  5.         <titre>
  6.                 La face cachee du Petrole
  7.         </titre>
  8.         <chapitre>
  9.                 <titre>
  10.                         Le monde n’aime pas affronter la realite
  11.                 </titre>
  12.                 <corps>
  13.                         J’ai decouvert que le monde n’aime pas affronter la realite…
  14.                 </corps>
  15.         </chapitre>
  16.         <chapitre>
  17.                 <titre>
  18.                         Le premier forage en 1859 et l’essor du petrole
  19.                 </titre>
  20.                 <corps>
  21.                         Le premier forage petrolier est effectue en 1859…
  22.                 </corps>
  23.         </chapitre>
  24. </livre>

Parcoure d’un document XML, avec SimpleXML

SimpleXML permet la lecture d’un document XML trÚs simplement, on fait appel pour cela la méthode “simplexml_load_file()” qui charge le document XML, ensuite SimpleXML gÚre chaque noeud du document comme un objet, une autre fonction permet de dérouler son document XML “asXml()”

  1. <?php
  2. /*
  3. * simplexml_load_file()
  4. * Charge un document XML et retourne un simplexml_element
  5. */
  6. $smpXML = simplexml_load_file(‘doc.xml’);
  7.  
  8. echo ‘<h1>’.$smpXML->titre.;
  9. echo ‘<em>par ‘.$smpXML->auteur.‘</em>’;
  10. foreach ($smpXML->chapitre as $chapitre) {
  11.         echo ‘<h2>’.$chapitre->titre.‘</h2>’;
  12.         echo ‘<p>’.$chapitre->corps.‘</p>’;
  13. }
  14. ?>

L’écriture avec SimpleXML, est aussi simple (: que la lecture !

La création d’un noeud est réalisé avec la fonction “addChild()”

  1. <?php
  2. $smpXML = simplexml_load_file(‘doc.xml’);
  3.  
  4. $smpXML->titre = “La Face cachee du PETROLE”;
  5.  
  6. $ajoutChap = $smpXML->addChild(‘chapitre’);
  7. $ajoutChap->addChild(‘titre’, ‘Rencontre avec Albert Speer’);
  8. $ajoutChap->addChild(‘corps’, ‘J\’ai compris a quel point le petrole…’);
  9.  
  10. echo ‘<h1>’.$smpXML->titre.‘</h1>’;
  11. echo ‘<em>par ‘.$smpXML->auteur.‘</em>’;
  12. foreach ($smpXML->chapitre as $chapitre) {
  13.         echo ‘<h2>’.$chapitre->titre.‘</h2>’;
  14.         echo ‘<p>’.$chapitre->corps.‘</p>’;
  15. }
  16. ?>

Un simple lecteur RSS avec SimpleRSS

Une petite application simple, histoire de mettre en pratique nos acquis (:,
un lecteur RSS partir d’une url… bon on est loin d’un Google Reader …m’enfin avec une feuille de style bien conçue…

  1. <?php
  2. $url = ;
  3. $LecteurRSS = simplexml_load_file($url);
  4.  
  5. echo ‘<h1>Simple Lecteur RSS avec SimpleRSS’;
  6. echo ‘<h2>’.$LecteurRSS->channel->title.‘</h2>’;
  7. foreach ($LecteurRSS->channel->item as $item) {
  8.         echo ‘<h3>’.$item->date.‘ - ‘.$item->titre.‘</h3>’;
  9.         echo ‘<p>’.$item->description.‘</p>’;
  10. }
  11. ?>

En conclusion on peut s’apercevoir que SimpleXML transforme le document XML en un assemblage d’objets, et le principe consiste parcourir les objets.

sources

Septembre 2007 – PHP Québec: Conférence PHP Québec 2008 : Appel aux conférenciers


L'équipe de PHP Québec est fière d'annoncer la sixième édition de la Conférence PHP Québec, qui aura lieu du 12 au 14 mars 2008 à Montréal (Québec, Canada). Nous sommes à la recherche d'experts PHP francophones et anglophones désireux de partager leur expertise avec les professionnels du Canada et des États-Unis.

Le PHPLab favorisera la communication entre les conférenciers et les participants autour des sujets répondant aux problématiques actuelles du marché. Lors de la conférence, des sujets destinés aux programmeurs, chefs de projets et directeurs seront abordés. Parmi les sujets: les dernières techniques de développement avec PHP5 et PHP6, XML, services web, bases de données, etc.

Les organisateurs attendent vos propositions originales et inédites. Pour plus d'informations, visitez le site web de la conférence: http://conf.phpquebec.com

Septembre 2007 – Dur Comme Faire: Le programme du Forum PHP 2007 a été annoncé

L'AFUP vient d'annoncer officiellement le programme du Forum PHP 2007 qui aura lieu à Paris les 21 et 22 novembre prochains. Kanopée, ma société de développement d'application web fait partie des organisateurs de l'évènement. Vous pourrez donc m'y croiser alors n'hésitez pas à venir faire...

Septembre 2007 – Apprendre-PHP.com: Programme des forums PHP des 21 et 22 Novembre 2007

Bonjour, Aujourd'hui a été annoncé sur le site de l'AFUP le programme pour la nouvelle session des forums PHP. Pour rappel, ils se tiendront les 21 et 22 novembre 2007 à Paris.

Septembre 2007 – Dur Comme Faire: Sortie de PDT

Après un an et demi de développement, PDT (ex PHP IDE) sort aujourd'hui en version 1.0. Développé en tant que plugin d'Eclipse, PDT souhaite devenir l'éditeur PHP Open Source de référence. PDT est l'extension de WTP pour les développeur PHP. Il est construit selon 3 axes : Editeur...

Septembre 2007 – PHP Index: Jelix 1.0 beta 3

Jelix est un framework pour PHP 5.1, qui comporte de nombreux composants et repose sur des modèles connus comme MVC, DAO, etc, tout en restant léger et performant. La version 1.0 beta 3 qui vient de sortir apporte des nouveautés importantes.

Ces nouveautés sont :

* un système de formulaire qui permet de gérer automatiquement les erreurs, la validation aussi bien côté client que coté serveur, ainsi que la génération automatique du code HTML et javascript. Tout ceci à partir d'un simple fichier descriptif en XML.
* un contrôleur générique pour faire de la gestion de données très rapidement (type CRUD)
* un module pour faire des tests unitaires aisément
* une uniformisation dans l'organisation des divers types de plugins
* de nombreuses améliorations dans la plupart des composants du framework.

Et bien sûr, comme dans les versions précédentes, Jelix 1.0 beta 3 propose une architecture modulaire, un moteur de template performant, des composants pour gérer l'authentification, les droits, l'internationalisation, ou encore faire du mapping relationnel-objet et de la communication inter-module. Le framework peut prendre aussi en charge les urls significatives, les thèmes, l'UTF-8, XML-RPC, JSON, RESTFull et bien d'autres choses. Sans oublier des scripts en ligne de commande qui permettent de développer rapidement.

À noter aussi les améliorations sur le site et les gros efforts qui ont été fait sur la documentation. Enfin l'ouverture d'une forge pour les développeurs de modules, plugins, et outils pour Jelix, qui comporte notamment un projet de plugin pour Eclipse, jelixeclipse, facilitant le développement d'applications pour Jelix.

Jelix 1.0 beta 3 est utilisé sur plusieurs sites, dont un à très forte audience (l'une des plus grosses plateformes de blog en France), et de ce fait peut être considéré comme très stable. C'est d'ailleurs la dernière beta avant la version 1.0.

Jelix est disponible en deux éditions : l'édition "developer" pour la phase développement d'une application, et l'édition "optimized" (facultative), optimisée pour les serveurs en productions.

* Site web
* Téléchargement
* Liste détaillée des changements

Proposé par Laurent Jouanneau

Septembre 2007 – z-f.fr: ZF 1.0.2 bientôt dans les bacs

Forum: Brèves
Auteur: philippe
Écrit le: Tue, 18 Sep 2007 12:02:30 +0200
Dernier message: Tue, 18 Sep 2007 12:02:30 +0200

Septembre 2007 – z-f.fr: Version finale de PDT

Forum: Brèves
Auteur: TiTerm
Écrit le: Tue, 18 Sep 2007 15:01:43 +0200
Dernier message: Tue, 18 Sep 2007 20:10:55 +0200

Septembre 2007 – PHPortail: Gestion de contenu : l'offre open source arrivée à maturité (18/09/07)

" Distinguant contenu et contenant, les outils de gestion web facilitent la création et la mise à jour de sites. Dans ce domaine, les logiciels libres - en PHP ou Java - ont acquis une réputation...

Septembre 2007 – PHPortail: Nouvelle version de MySQL : 5.1.21 (13/09/07)

MySQL 5.1.21, la dernière version du système de base de données Open Source, a été publiée. C'est une version bêta : il est recommandé de sauver ses données avant de changer de version, et...

Septembre 2007 – PHPortail: phpMyAdmin 2.11.0 maintenant disponible (10/09/07)

phpMyAdmin publie sa dernière version de ce très populaire logiciel de gestion des bases MySQL.

« Cette version apporte la création de vue à partir d'un résultat de requête, et sait gérer...

Septembre 2007 – PHPortail: Statistique PHP d'Août 2007 (18/09/07)

Durant le mois d'août 2007, PHP 4 est finalement entré en phase de déclin, avec une première croissance négative sur le marché PHP. Après avoir accusé un ralentissement depuis le début de...

Septembre 2007 – PHPortail: Annonce de la publication de PHPEdit 2.12.2 (12/09/07)

Le 16 août 2007. WaterProof, annonce la publication de la version 2.12.2 de son logiciel phare PHPEdit. Cette version propose de nombreuses améliorations et contient le support exclusif de PHPUnit...

Septembre 2007 – PHPortail: Sécurité : Protéger son code source PHP avec mod_security (10/09/07)

Il arrive parfois qu'un serveur Web a une fuite de son code PHP : au lieu d'afficher de résultat du script PHP, il affiche carrément le code source, avec tous les problèmes de sécurité qui en...

Septembre 2007 – PHPortail: MySQL 6.0.2 (18/09/07)

MySQL 6.0.2 a été publiée. C'est une version alpha : elle permet de tester les nouvelles fonctionnalités, notamment le moteur Falcon, mais il est recommandé de sauver ses données avant de...

Septembre 2007 – PHPortail: 15 fonctionnalités de PHP qui sont trop souvent ignorées (12/09/07)

Il est temps de bien apprendre PHP.

* 1. Reflection API
* 2. Ticks
* 3. list(), extract(), and compact()
* 4. PHP5 SPL
* 5. __autoload()
* 6. Type Hinting
* 7. Abstract Classes and...

Septembre 2007 – PHPortail: GeekChat : un chat PHP, MySQL et Ajax (10/09/07)

« GeekChat Basic est un chat en ligne, basée sur PHP, MySQL pour donner un système puissant de communication, qui peut être intégré à n'importe quel site Web. »

GeekChat fonctionne en Ajax...

Septembre 2007 – PHPortail: Intégrer Smarty dans le Zend Framework (18/09/07)

«Ce tutoriel suppose que vous connaissez déjà les technologies Smarty et Zend Framework.

Smarty est un moteur de template en PHP. Il est simple et intuitif et permet à un graphiste de faire...

Septembre 2007 – PHPortail: Sécurité : Liste des fonctions PHP à surveiller (12/09/07)

Dans livre 'Sécurité PHP 5 et MySQL 5' nous avons cité une liste de fonctions PHP à surveiller.

Toutes ces fonctions ont un impact sur la sécurité, même s'il peut être très différent...

Septembre 2007 – PHPortail: Blitz : Un moteur de gabaris natif (06/09/07)

Blitz est une extension PHP, écrite en C, qui reproduit les fonctionnalités de la bibliothèque de gabarits (templates) php_templates. Blitz se concentre en particulier sur les performances...

Septembre 2007 – PHPortail: Sécurité : Les injections SQL par l'exemple (18/09/07)

Que faire avec une injection SQL? Il y a le classique contournement d'identification ou la destruction de tables... Mais on peut en faire bien d'autre, comme :

* deviner des noms de colonnes
*...

Septembre 2007 – PHPortail: Sécurité : Liste des caractères spéciaux (12/09/07)

Dans notre livre "Sécurité PHP 5 et MySQL", Damien et moi avons élaboré une liste des caractères spéciaux auxquels il faut faire attention lors de la construction du résultat d’un script PHP,...

Septembre 2007 – PHPortail: Sécurité : JS Fuzzer et JS Lan Scan (06/09/07)

Gareth Heyes propose deux outils en Open Source, après avoir blogué et testé leur utilité.

Le premier outil est un Fuzzer. Il s'agit d'un outil qui torture des balises HTML, pour les envoyer...

Septembre 2007 – PHPortail: Internationalisation de dates avec PHP et MySQL (18/09/07)

« Dans le cadre d’un des mes projets, j’ai été amené à me poser la question de l’internationalisation de données d’un site multilingue, en particulier des dates.
La date n’étant pas...

Septembre 2007 – PHPortail: Tests Open Source (12/09/07)

Open Source Testing se consacre à recenser les outils de tests disponibles en Open Source. Il y a des listes de tests unitaires et de performances, incluant les tests fonctionnels, les graphiques,...

Septembre 2007 – PHPortail: Conférence PHP Québec 2008 : Appel aux conférenciers (14/09/07)

L'équipe de PHP Québec est fière d'annoncer la sixième édition de la Conférence PHP Québec, qui aura lieu du 12 au 14 mars 2008 à Montréal (Québec, Canada). Nous sommes à la recherche...

Septembre 2007 – PHPortail: Sortie de la version 2.5.4 de PHP SysInfo (12/09/07)

PHP SysInfo est un script PHP qui affiche des informations sur l'hôte utilisé (Linux). Il affiche des informations telles que Uptime, CPU, mémoire, SCSI, IDE, PCI, Ethernet, disquettes et...

Septembre 2007 – PHPortail: phar 1.2.1 (14/09/07)

phar 1.2.1, la dernière version de l'extension pecl d'archive de PHP. (PHp ARchive), a été publié. Similairement aux fichiers JAR de Java, on peut ranger tous les fichiers nécessaires à une...

Septembre 2007 – PHPortail: Sécurité PHP 5 et MySQL 5 (10/09/07)

Le livre sur la sécurité PHP 5 et MySQL 5 a son site compagnon sur Nexen.net, avec plusieurs listes de sécurité intéressantes. Vous y trouverez notamment :

* La liste des caractères...

Septembre 2007 – PHPortail: MySQL Entreprise 5.0.48 publiée (18/09/07)

MySQL 5.0.48, une des mises à jour mensuelle de MySQL Entreprise, est disponible sur les serveurs de MySQL. Elle apporte une ajout de fonctionnalité et 94 corrections. La version 5.0.46, de la...

Septembre 2007 – PHPortail: Installer le module MSSQL de PHP sur CentOS 5.0 (14/09/07)

« Comme vous l'avez peut-être remarqué, sur CentOS 5.0, il n'y pas d'extension PHP-MSSQL (pour Microsoft SQL Server) disponible dans yum. Si vous en avez besoin, vous devez compiler vous même...

Septembre 2007 – PHPortail: Sécurité : Techniques de protection contre les CSRF (10/09/07)

Il est très difficile de se défendre contre les CSRF, car c'est l'utilisateur innocent (mais légitime) qui exécute les commandes pour le pirate. Ce dernier ne sera jamais sur le site. Il existe...

Septembre 2007 – PHPortail: Analyse des fichiers .plist en PHP (18/09/07)

«Comme promis, je vais pousser mon étude des fichiers.plist un peu plus loin, cette fois-ci en PHP. Je vais vous montrer des concepts fonctionnels de programmation, appliqués à PHP, notamment en...

Septembre 2007 – PHPortail: Mashup avec Yahoo! et PHP (14/09/07)

« Vous voulez créer votre propre mashup? Super! Mashups, ces applications Web qui lisent des informations sur des sources externes et les combinent de manière moderne et inattendue, sont faciles...

Septembre 2007 – PHPortail: WWW SQL Designer : conception de base sur le Web (10/09/07)

WWW SQL Designer est une application de conception de base
de données. Elle est écrite entièrement en Ajax. Vous pouvez y
constituer vos bases de données, inscrire les relations
d'une...

Septembre 2007 – PHPortail: 12 questions pour votre futur hébergement (18/09/07)

Vous cherchez un hébergeur PHP. Stoyan Stevanof propose une liste de 12 questions à vérifier. Il y rassemble différentes questions techniques qui dépassent les simples considérations...

Septembre 2007 – PHPortail: PHP 5.2.4 (13/09/07)

L'équipe de développement de PHP annonce la publication immédiate de PHP 5.2.4. Cette version met l'accent sur la stabilité de la branche PHP 5.2, avec la correction de 120 problèmes et la...

Septembre 2007 – PHPortail: Sécurité : Un premier mode teinté pour PHP (10/09/07)

Sur son blogue, Stefan Esser fait mention d'un projet de mode teinté pour PHP.
Le mode teinté consiste à marque les valeurs d'un indicateur de leur niveau potentiel de dangerosité. $_GET et...

Septembre 2007 – PHP Index: PostgreSQL 8.2.5, 8.1.10 etc

Publications de version de maintenance du SGBD libre PostgreSQL.

Le PostgreSQL Global Development Group a annoncé la mise à jour de l'ensemble des versions de PostgreSQL. Il s'agit essentiellement de correction, de failles de sécurité mineures. Les versions les plus à jour sont désormais les suivantes: 8.2.5, 8.1.10, 8.0.14, 7.4.18, 7.3.20.

Septembre 2007 – Digital Fashion: Riskle_Form, a quick wrapup

So well, I've been busy these days working on my own implementation of a form component in the ZF spirit. This post is to help me see where I'm at with this component, as well as planning future evolution. I'll try my best to describe what it does and does not, and what it could do in the future.

Of course, while this is more of a personnal pense-bete than anything else, any comments are welcome.

Basic features

Forms are build using the factory, which ensures each form has a unique name so that two forms can't conflict when used on the same action. Each element of the form is materialized by an instance of Riskle_Form_Element which holds any configuration directive for the element.

Prototyping

The component features an extensible prototyping system via the Riskle_Form_Prototype set of class. Default (and mandatory atm) is to use a Zend_Config_Ini file which can in turn contains further prototyping instructions, such as prototype from a model (by model I mean a class extending Zend_Db_Table). A given form can embed multiple prototypes, possibly of the same type, which have to be conretized before the form is usable. Concretization of form operates in a FILO merging fashion. Prototyping from a model is for the moment very basic, it treats all fields as text field, but this will be addressed in time. Of course, the system allows for different source of prototyping (think Riskle_Form_Prototype_Xml for example).

Form elements

Elements features a variety of configuration directives, which I'll details here.

  • type: explicitly tells the type of the field (for the moment, better tell an existing HTML type). default is text.
  • label: basically, the string to be put into the <label /> tag.
  • validators: an array of validators, see Data validation for details.
  • allow_empty: weither the field is allowed to be empty or not.
  • datasource: specify a datasource to retrieve the field datas from (only used for <select /> fields). See below for further details about that.
  • depends: specify a field to which the current field is dependent. Mainly used for auto-ajax-refreshing <select />.

The datasource directive deserves a little more explanation. When the form factory encounters a datasource directive, it delegates the work to the datasource factory, which autodetects and decode the datasource. The core distributions handles the following datasources:

  • Instanciated Model, with format: YourModel->method
  • Static Model, with format: YourModel::method
  • CSV string, with format: csv:foo,bar. It uses a user land CSV decoder that will most likely be bundled with the core distribution when (if ?) released.
  • JSON string, with format: json:{'foo', 'bar'}. It's worth noting that this example will be converted to the following associating array: array('foo' => 'foo', 'bar' => 'bar'). You can avoid this by including a noassoc switch (so that it reads json:noassoc:{'foo', 'bar'}. Another note on JSON: the main problem when allowing JSON in INI files is that you can't have a double quote character in values (except by using a dirty hack which I do not want), and the php json decoder expects identifiers to be doublequoted. The datasource handles this by replacing any non escaped single quote to a double quote.

Data validation

Data validation is done by a subclassed Zend_Input_Filter. validators configuration from elements should conform to ZFI syntax. The custom Riskle_Form_Input component features a getRaw set of methods to retrieve raw data (used in case the form was not successful). Not much else to say here.

Rendering

The core distribution features a set of view helper aimed at easing html form drawing. The helpers use the built-in ZF view helpers to render fields while adding a bunch of custom markup around (namely: labels and error messages). The default helpers also take care of fields that depend on other fields (see Form elements) and add the according ajax queries to populate the element.

Workflow control

The most interesting part I think. Riskle_Form features a plugin system, much like the Zend_Controller one. It exposes the following hooks (in this order):

  • formStartup, always run at the beginning of the workflow
  • prePopulate, run before the form gets it data (either from the model or the request)
  • postPopulate, run after the form gets it data
  • preValidate, run before the forms attempts to validate the data
  • onValidateSuccess, run if and only if the data validation was a success
  • onValidateFailure, run if and only if the data validation was a failure
  • postValidate, run after the forms attempts to validate the data (regardless of the success or not)
  • preCommit, run before the form tries to feed the model with the data
  • onCommitSuccess, run if and only if the data feedage was a success
  • onCommitFailure, run if and only if the data feedage was a failure
  • postCommit, run after the forms tries to feed the model with the data (regardless of the success or not)
  • formShutdown, always run at the end of the workflow

For each hook, the instance of the current form is passed as an argument to the method. Of course, the commit set of hooks will only be run if the data validates.

Sample usage

A simple uploading form could look like the following:

$form = Riskle_Form::factory(new Zend_Config_Ini('upload.ini', null));
$form->registerPlugin(new Riskle_Form_Plugin_Upload('myUploadField'));
$form->run();
$this->view->assign('form', $form);

the view would look like:

echo $this->drawForm($this->form);

and upload.ini could look like:

[form]
model = "uploaded_files"
prototype = 1

[fields]
myUploadField.type = "file"
myUploadField.label = "choose an image"

legend.type = "text"
legend.label = "Legend"

What it lacks

Clearly, this form component is designed for use in an HTML component. Few or no care has been taken to ensure cross-medium compatibiliy such as XHTML, PDF, etc. Hopefully the changes to apply to achieve such compatibility will not be that much of a hassle. While I'm not willing to ensure such a compatibility, I'd be happy to apply any patch submitted.

Regarding plugins, they still miss the ability to really act on the workflow, such as stopping it, skipping steps (?) or add errors to the stack, etc.

Also, the code still needs a few refactoring and optimization, especially regarding the view helpers and the main form class, as well as the configuration file syntax which needs an in-depth revision.

Septembre 2007 – Digital Fashion: Riskle_Form, a quick wrapup

So well, I've been busy these days working on my own implementation of a form component in the ZF spirit. This post is to help me see where I'm at with this component, as well as planning future evolution. I'll try my best to describe what it does and does not, and what it could do in the future.

Of course, while this is more of a personnal pense-bete than anything else, any comments are welcome.

Basic features

Forms are build using the factory, which ensures each form has a unique name so that two forms can't conflict when used on the same action. Each element of the form is materialized by an instance of Riskle_Form_Element which holds any configuration directive for the element.

Prototyping

The component features an extensible prototyping system via the Riskle_Form_Prototype set of class. Default (and mandatory atm) is to use a Zend_Config_Ini file which can in turn contains further prototyping instructions, such as prototype from a model (by model I mean a class extending Zend_Db_Table). A given form can embed multiple prototypes, possibly of the same type, which have to be conretized before the form is usable. Concretization of form operates in a FILO merging fashion. Prototyping from a model is for the moment very basic, it treats all fields as text field, but this will be addressed in time. Of course, the system allows for different source of prototyping (think Riskle_Form_Prototype_Xml for example).

Form elements

Elements features a variety of configuration directives, which I'll details here.

  • type: explicitly tells the type of the field (for the moment, better tell an existing HTML type). default is text.
  • label: basically, the string to be put into the
  • validators: an array of validators, see Data validation for details.
  • allow_empty: weither the field is allowed to be empty or not.
  • datasource: specify a datasource to retrieve the field datas from (only used for .

The datasource directive deserves a little more explanation. When the form factory encounters a datasource directive, it delegates the work to the datasource factory, which autodetects and decode the datasource. The core distributions handles the following datasources:

  • Instanciated Model, with format: YourModel->method
  • Static Model, with format: YourModel::method
  • CSV string, with format: csv:foo,bar. It uses a user land CSV decoder that will most likely be bundled with the core distribution when (if ?) released.
  • JSON string, with format: json:{'foo', 'bar'}. It's worth noting that this example will be converted to the following associating array: array('foo' => 'foo', 'bar' => 'bar'). You can avoid this by including a noassoc switch (so that it reads json:noassoc:{'foo', 'bar'}. Another note on JSON: the main problem when allowing JSON in INI files is that you can't have a double quote character in values (except by using a dirty hack which I do not want), and the php json decoder expects identifiers to be doublequoted. The datasource handles this by replacing any non escaped single quote to a double quote.

Data validation

Data validation is done by a subclassed Zend_Input_Filter. validators configuration from elements should conform to ZFI syntax. The custom Riskle_Form_Input component features a getRaw set of methods to retrieve raw data (used in case the form was not successful). Not much else to say here.

Rendering

The core distribution features a set of view helper aimed at easing html form drawing. The helpers use the built-in ZF view helpers to render fields while adding a bunch of custom markup around (namely: labels and error messages). The default helpers also take care of fields that depend on other fields (see Form elements) and add the according ajax queries to populate the element.

Workflow control

The most interesting part I think. Riskle_Form features a plugin system, much like the Zend_Controller one. It exposes the following hooks (in this order):

  • formStartup, always run at the beginning of the workflow
  • prePopulate, run before the form gets it data (either from the model or the request)
  • postPopulate, run after the form gets it data
  • preValidate, run before the forms attempts to validate the data
  • onValidateSuccess, run if and only if the data validation was a success
  • onValidateFailure, run if and only if the data validation was a failure
  • postValidate, run after the forms attempts to validate the data (regardless of the success or not)
  • preCommit, run before the form tries to feed the model with the data
  • onCommitSuccess, run if and only if the data feedage was a success
  • onCommitFailure, run if and only if the data feedage was a failure
  • postCommit, run after the forms tries to feed the model with the data (regardless of the success or not)
  • formShutdown, always run at the end of the workflow

For each hook, the instance of the current form is passed as an argument to the method. Of course, the commit set of hooks will only be run if the data validates.

Sample usage

A simple uploading form could look like the following:

$form = Riskle_Form::factory(new Zend_Config_Ini('upload.ini', null));
$form->registerPlugin(new Riskle_Form_Plugin_Upload('myUploadField'));
$form->run();
$this->view->assign('form', $form);

the view would look like:

echo $this->drawForm($this->form);

and upload.ini could look like:

[form]
model = "uploaded_files"
prototype = 1
 
[fields]
myUploadField.type = "file"
myUploadField.label = "choose an image"
 
legend.type = "text"
legend.label = "Legend"

What it lacks

Clearly, this form component is designed for use in an HTML component. Few or no care has been taken to ensure cross-medium compatibiliy such as XHTML, PDF, etc. Hopefully the changes to apply to achieve such compatibility will not be that much of a hassle. While I'm not willing to ensure such a compatibility, I'd be happy to apply any patch submitted.

Regarding plugins, they still miss the ability to really act on the workflow, such as stopping it, skipping steps (?) or add errors to the stack, etc.

Also, the code still needs a few refactoring and optimization, especially regarding the view helpers and the main form class, as well as the configuration file syntax which needs an in-depth revision.

Septembre 2007 – PHP Index: SPIP 1.9.2c : mise à jour de sécurité

Une faille de sécurité affectant les versions antérieures de SPIP 1.9 a été trouvée.

Ceci a conduit à sortir immédiatement une version 1.9.2c corrigeant cette erreur et quelques autres de moindre gravité.

La même faille a été corrigée et donne la version SPIP 1.8.3a.

La suite sur http://www.pyrat.net/SPIP-1-9-2c.html

Proposé par Jacques PYRAT

Septembre 2007 – PHPortail: mysqlpdump : p pour exports parallele (19/09/07)

Faire une exportation de données avec mysqldump peut-être très longue. Vous pouvez maintenant allez plus rapidement avec mysqlpdump (notez le 'p' en plus). Cet utilitaire se base sur le mysqldump,...

Septembre 2007 – PHPortail: Conférence gratuite : Clients Web riche avec PHP et Flex (19/09/07)

L’Association française des Utilisateurs de PHP s’associe à Adobe et Anaska pour vous inviter à un apéro technique gratuit présentant comment créer des applications riches avec PHP et la...

Septembre 2007 – PHPortail: CodeFest2007 à Montréal : OpenID pour tous (19/09/07)

PHP Québec proposait dernièrement un Code Fest : le but était d'implémenter le support d'OpenID dans différentes applications libres.

Les applications durant ce Code Fest étaient :...

Septembre 2007 – PHPortail: Hébergements multi-PHP (19/09/07)

«Je me souviens avoir longuement étudié le marché lorsque je suis passé de mon antique Apple ][c à un Macintosh LC : parmi les raisons qui avaient poussé mon frère Ghislain et moi vers cette...

Septembre 2007 – PHPortail: Les données statiques en PHP 5 (19/09/07)

« Vous pouvez trouver que le concept de données statiques en PHP 5 est plutôt difficile à comprendre, ou même inutile, mais la vérité est que dans des situations réelles, elles peuvent être...

Septembre 2007 – z-f.fr: z-f.fr dans le magazine PHPSolutions

Forum: Brèves
Auteur: Julien
Écrit le: Thu, 20 Sep 2007 09:46:16 +0200
Dernier message: Fri, 21 Sep 2007 10:02:31 +0200

Septembre 2007 – PHP Index: PDT 1.0 (PHP Development Tools)

La fondation Eclipse vient d'annoncer la sortie de la version stable de PDT 1.0.

Le PHP Development Tools est, pour rappel, une extension Eclipse permettant à cet éditeur de se doter des fonctionnalités nécessaires au développement PHP (débuggage, colorisation syntaxique, "autocomplétion", et bien d'autres encore).

Le PDT se veut ouvert et extensible. D'après la fondation Eclipse, grâce à son API, il sera relativement aisé de l'enrichir de nouvelles fonctionnalités.

Notons enfin que PDT est le fruit de plusieurs mois de collaboration entre Zend et la fondation Eclipse.

Septembre 2007 – PHP Index: Infrastructures de la ville de Lyon et site du ministère de l'écologie

La ville de Lyon a opté pour l'open source pour l’hébergement, la maintenance et l’évolution de ses différents portails web. Les technologies employées sont notamment : serveurs Apache, PHP, Zope/CPS, Linux RedHat, Squid, MySQL et OpenLDAP.


Le site Grenelle environnement, présenté par le ministère de l'écologie, du développement et de l'aménagement durable, est quant à lui un nouvel exemple de l'utilisation de SPIP.

Septembre 2007 – Rom's blog: Photoshoot avec les stars du PHP

En faisant du ménage sur mon portable, je suis retombé sur cette photo plutôt marrante :

Romain Bourdon, Rasmus Lerdorf, Zeev Suraski

Cette photo date du Forum PHP 2004.
J’étais parti faire des courses car on manquait de bouteille d’eau pour les participants et en revenant je me suis trouvé au milieu d’un photoshoot de Rasmus et Zeev pour divers journalistes présents sur place. On (je ne sais plus exactement qui) m’a alors demandé de me mettre à côté d’eux pour le côté fun de la situation…malheureusement (ou heureusement), la photo n’a pas été sélectionnée pour les magazines en question ;-)

Septembre 2007 – PHP Index: phpMyAdmin 2.11.1

Nouvelle cuvée de pure maintenance corrective pour phpMyAdmin.

Septembre 2007 – PHP Index: Bulletin de sécurité TYPO3 sur l'extension mm-forum

TYPO3 diffuse un bulletin de sécurité concernant de multiples failles dans l'extension mm-forum.

L'équipe de sécurité de TYPO3 a reporté que de nombreuses failles de sécurité de type injection SQL et Cross Site Scripting étaient présentes dans l'extension non officielle mm-forum et ce jusqu'à la version 0.1.2. Ces failles qualifiées de très importantes sont corrigées dans la version 0.1.3 de l'extension sortie le 19 septembre.
TYPO3 en profite pour rappeler que des consignes en matière de sécurité sont disponibles dans cette documentation et que cette page recense les bulletins de sécurité critiques comme celui-ci.

Annonce TYPO3

Septembre 2007 – PHP Index: LMI: Pour Gartner, l'Open Source est incontournable

Quelques citations clés:

  • « L'Open Source s'intègrera à votre réseau que vous le vouliez ou non. Il est devenu totalement impossible d'éviter le sujet »
  • « Vous devez établir vos critères pour évaluer les logiciels Open Source, ainsi que des procédures pour les adopter et les maintenir. L'Open Source n'est plus un marché de niche ou une mode, c'est devenu un produit courant et qui le restera. »
Lire l'article sur LMI

Septembre 2007 – Narno.com: Forum PHP 2007 : le programme

Forum PHP 2007Avec un peu de retard et pour ceux qui auraient manqué l'information : le programme du Forum PHP 2007 à été plublié.

Le Forum PHP 2007 se déroulera les 21 et 22 novembre prochain. Vous y serez ?

Septembre 2007 – Narno.com: Forum PHP 2007 : le programme

Forum PHP 2007Avec un peu de retard et pour ceux qui auraient manqué l'information : le programme du Forum PHP 2007 à été plublié.

Le Forum PHP 2007 se déroulera les 21 et 22 novembre prochain. Vous y serez ?

Septembre 2007 – sahid.funraill.org: Un Singleton multi instances…

Modifier le fonctionnement de son Singleton

Je reviens sur le pattern Singleton, car actuellement je travaille sur un projet perso et celui-ci m’a posé un probleme…
Dans mon cas précis, je me sers du Singleton pour gerer une classe de Log. On pourrait penser que le Singleton se prete parfaitement a ce type de fonctionnalité, seulement je me suis retrouvé face un probleme qui est en fait une des grandes forces du Singleton, l’initialisation unique …

Je m’explique, dans mon cas j’ai besoin de pouvoir travailler avec de multiples fichiers log, si le nom du fichier est passé en parametre du constructeur, je ne pourrais travailler qu’avec celui-ci, et pour ecrire sur un nouveau fichier je devrais passer par un accesseur qui modifierait l’attribut…, ou encore je devrais passer ma methode permettant l’ecriture du log, le nom du fichier…

  1. <?php
  2. // via le constructeur
  3. $o = Log::singleton (‘file.log’);
  4. $o->log ("Une chaine inscrite dans le fichier ‘file.log’");
  5. $o->setFileLog (‘file2.log’);
  6. $o->log ("Une chaine inscrite dans le fichier ‘file2.log’");
  7.  
  8. // via la methode log
  9. $o = Log::singleton ();
  10. $o->log (‘file.log’, "Une chaine inscrite dans le fichier ‘file.log’");
  11. ?>

Ces deux methodes ne me plaisent pas particulierement, pour résoudre le probleme l’idée est de modifier le Singleton pour qu’il enregistre non pas une, mais de multiples instances de notre classe.

  1. $o = Log::singleton (‘key_file’, ‘file.log’);
  2. $o->log ("une chaine… dans ‘file.log’");
  3.  
  4. $o = Log::singleton (‘key_file2′, ‘file2.log’);
  5. $o->log ("une chaine… dans ‘file2.log’");

Donc si l’instance de la classe n’est pas déj créée, il en crée une nouvelle,l’enregistre dans un tableau et la retourne, si celle-ci est dej créée il la retourne simplement.

  1. class SingletonMulti
  2. {
  3.   /**
  4.    * array with all instances
  5.    */
  6.   private static $_instances = array ();
  7.  
  8.   /**
  9.    * all arguments …
  10.    */
  11.   private $args;
  12.  
  13.   public static singleton ($key, $args = "null")
  14.   {
  15.     if (!array_key_exists ($key, self::$_instances))
  16.       self::$_instances[$key] = new SinletonMulti ($args);
  17.     return self::$_instances[$key];
  18.   }
  19.  
  20.   private __construct ($args)
  21.   {
  22.     $this->args = $args;
  23.   }    
  24. }

On sort peut être un peu du principe du Singleton, néanmoins l’esprit et les avantages y sont toujours (;

Septembre 2007 – Digital Fashion: Zend Framework Pagination, third strike

UPDATE: new version (r105) available.

The component was given a little rewrite as expected, but maybe a little bit later than I would have wanted to :-) So it now has its own Rowclass proxy from which you can pull various infos such as current page, page range, next page, etc all exposed as getter methods (that is, getCurrentPage, getPageRange, getNextPage, etc), which you won't really have to worry about since the brand new view helper will take care of that for you. Usage has changed a little, bit, so let's first have a look at what's happening from the controller point of view:

$table = new Riskle_Db_Table_Paginate(new Table, $this->_getParam('page'));
$this->view->rowset = $table->fetchAll();

Not much changed here, except we don't need anymore to call getPaginationInfos(). Nice ! Now the big part, the view:

$this->paginate($this->rowset);
echo $this->paginate()->previous();
echo $this->paginate()->navigation();
echo $this->paginate()->next();

The view helper uses the neat composite helper trick from naneau - which is a really cool trick, great job naneau my fellow no-more-a-bunny. The first call inits the helper, feeding him the necessary rowset to work on, then you just have to call the methods you need to draw the navigation links. As you may expect, previous and next method will return nothing if no page is available (actually, they return their second argument, which defaults to an empty string).

Also, it's worth noting that the bundled Riskle_Db_Table features the patch from Erik, as well as a totally rewritten fetchCols method (now uses a straight Zend_Db_Select object instead of the ugly trick it used to use).

My code is no longer available on subversion, I moved the project to assembla. Instead ou can download this component from the riskle space's files board (direct download), the file contains all classes needed for the component to work, just unzip it in your include_path and you're set.

As usual, any comments are more than welcome.

Septembre 2007 – Digital Fashion: Zend Framework Pagination, third strike

UPDATE: new version (r105) available.

The component was given a little rewrite as expected, but maybe a little bit later than I would have wanted to :-) So it now has its own Rowclass proxy from which you can pull various infos such as current page, page range, next page, etc all exposed as getter methods (that is, getCurrentPage, getPageRange, getNextPage, etc), which you won't really have to worry about since the brand new view helper will take care of that for you. Usage has changed a little, bit, so let's first have a look at what's happening from the controller point of view:

$table = new Riskle_Db_Table_Paginate(new Table, $this->_getParam('page'));
$this->view->rowset = $table->fetchAll();

Not much changed here, except we don't need anymore to call getPaginationInfos(). Nice ! Now the big part, the view:

$this->paginate($this->rowset);
echo $this->paginate()->previous();
echo $this->paginate()->navigation();
echo $this->paginate()->next();

The view helper uses the neat composite helper trick from naneau - which is a really cool trick, great job naneau my fellow no-more-a-bunny. The first call inits the helper, feeding him the necessary rowset to work on, then you just have to call the methods you need to draw the navigation links. As you may expect, previous and next method will return nothing if no page is available (actually, they return their second argument, which defaults to an empty string).

Also, it's worth noting that the bundled Riskle_Db_Table features the patch from Erik, as well as a totally rewritten fetchCols method (now uses a straight Zend_Db_Select object instead of the ugly trick it used to use).

My code is no longer available on subversion, I moved the project to assembla. Instead ou can download this component from the riskle space's files board (direct download), the file contains all classes needed for the component to work, just unzip it in your include_path and you're set.

As usual, any comments are more than welcome.

Septembre 2007 – PHP Québec: Assemblée Générale 2007

Montréal, le 11 octobre 2007

L'équipe de PHP Québec vous invite à son Assemblée Générale qui aura
lieu le samedi 27 octobre 2007 à l'ETS. Le lieu exact sera affiché sur le site web.


Ordre du jour:

* Présentation des états financiers
* Aborder la fusion
* Présentation des postes et des candidatures
* Vote et dépouillement des votes
* Annonce officielle du résultat des élections


Pour commencer, l'équipe de PHP Québec présentera les états financiers et fera le tour des documents «Présentation aux Membres» et «Règlements Internes».

En deuxième partie, la fusion PHP Québec / Conférence PHP Québec sera présentée aux membres.

Ensuite, les personnes désirant devenir membre pourront s'inscrire sur place et participer au vote. Les cartes de membre seront distribuées le jour même ou envoyées par la poste la semaine suivante.

Par la suite, tous les candidats ayant postulé pour un poste bénéficieront de deux minutes pour se présenter.
Les candidats doivent se déclarer au plus tard le mardi 23 octobre en envoyer leur intention et une courte description à board@phpquebec.com
La date limite pour se porter candidat est le 23 octobre 2007 à 23:59, heure du Québec.

L'Assemblée Générale se terminera avec l'élection du nouveau Conseil d'Administration de PHP Québec pour la saison 2007-2008.

Voici la liste des postes pour lesquels vous pouvez postuler :

* Président
* Secrétaire
* Trésorier
* Responsable du serveur web
* Responsables de groupe

Les postes de président, de Secrétaire et de responsable de groupe de Montréal et Québec sont vacants. Les poste de Président et de Secrtaire devront être comblés.

À noter:

* Selon la politique électorale (cf. Règlement Interne section 5.1),
un maximum de 50% des postes sont renouvelables.
* Toutes les personnes désirant voter ou postuler pour un poste
devra être membre en règle à compter du 20 octobre 2007, tel que
mentionné dans les articles 2.0 et 5.4 du Règlement Interne.
* Toutes les personnes désirant postuler pour l'un de ces postes
doivent faire parvenir un courrier électronique à board@phpquebec.org.
Joignez-y le titre du poste, une courte description de vos
accomplissements et un paragraphe décrivant ce qui fait de vous le
candidat idéal pour ce poste.

Pour plus de détails sur les responsabilités liées à chacun de ces
postes, veuillez vous référer au Règlement Interne section 4.0.


L'Equipe de PHP Québec

Septembre 2007 – PHPortail: La refactorisation de code en PHP (24/09/07)

"Au début, la refactorisation était un peu de la magie. Avec l'expérience, j'ai appris en la voir comme une technique, et désormais, la refactorisation est intégrée dans mon environnement de...

Septembre 2007 – PHPortail: phpMyEdit 5.7.1 (24/09/07)

phpMyEdit 5.7.1 est sorti.

phpMyEdit produit du code PHP pour afficher et modifier des tables MySQL, en HTML. Tout ce que vous avez besoin de faire est un programme simple pour appeler ces classes...

Septembre 2007 – PHPortail: iCalcreator : création de fichier iCAL (RFC 2445) (24/09/07)

iCalcreator est une classe PHP pour gérer des fichiers au format iCAL, dans des systèmes non-calendaire, tels que des CMS, blogues, site de nouvelles ou d'autres applications en ligne qui gèrent...

Septembre 2007 – PHPortail: Querysniffer : log de requêtes SQL souple (24/09/07)

« Querysniffer sert à lire des données sur un serveur en
production. Il est impossible de savoir ce qui se passe sur
un serveur MySQL sans activer le log de requêtes général.
Pour cela,...

Septembre 2007 – PHPortail: Framework de migration de base de données en PHP (24/09/07)

« Un de mes collègues travaille sur un nouveau projet PHP et se lamente du manque d'outil pour assurer la migration de base de données. En y réfléchissant, j'ai déjà voulu ce type de framework...

Septembre 2007 – Rom's blog: Compression zlib sans passer par la directive “zlib.output_compression”

En PHP, il est possible de compresser les sources envoyés vers le navigateur afin d’économiser de la bande passante. Cela s’appelle la compression zlib. Il est possible de l’activer directement dans le fichier php.ini grâce à la directive zlib.out_compression.

Mais voilà, on n’a pas toujours accès au fichier php.ini. Vous allez alors me dire

“bah, t’as qu’à faire un ini_set() dans ton code!”.

Je suis d’accord, sauf que l’utilisation d’ini_set() est gourmande en temps d’exécution vu que l’a conf est rechargée à chacun de ses appels.

Une solution tierce que m’a donné un stagiaire sur une formation que j’anime cette semaine est de passer par l’output buffering.

Il est possible de passer une fonction de callback à ob_start(). Cette fonction sera exécutée sur l’ensemble de votre buffer, donc de votre page. Or il existe une fonction spécifique en PHP permettant d’effectuer la compression zlib avec l’output buffering : ob_gzhandler()

En complant les deux, on obtient une compression zlib sur sa page :

ob_start(’ob_gzhandler’);

Cette astuce est certainement connue de beaucoup de monde vu qu’elle est directement décrite dans la documentation de PHP (http://fr.php.net/manual/fr/function.ob-gzhandler.php) mais je doit avouer que je n’étais jamais tombé dessus.

Septembre 2007 – PHPortail: PDT 1.0 publié (26/09/07)

PHP Developpement Tools (PDT) sont des outils de développement PHP basé sur la plate-forme de développement Eclipse. Ils fournissent un éditeur, un débogueur et un inspecteur de code....

Septembre 2007 – PHPortail: PHPlist 2.10.5 (26/09/07)

La nouvelle version de ce système de publipostage en PHP est disponible.

Cette version corrige près d'une trentaine de bogues de la version précédente.

Septembre 2007 – PHPortail: lazierLoad : Chargement d'images au fil du scroll (26/09/07)

lazierLoad est un script JavaScript qui affiche un site en ne chargeant que les images que l'utilisateur voit. C'est à dire seulement celle que son navigateur affiche présentement`

Septembre 2007 – PHPortail: Framework de développement CSS (26/09/07)

« Vous n'avez pas besoin de réécrire le même code CSS et xhtml encore et encore. Quel que soit le projet Web que vous démarrez, il arrive un moment où vous devez définir des classes et des...

Septembre 2007 – PHPortail: Prochaine version de eZ components (26/09/07)

Derick Rethans nous donne des nouvelles sur les composantes eZ:

« Nous venons tout juste de publier notre nouvelle version alpha de cinq composantes. Les modifications aux classes...

Septembre 2007 – PHP Index: Zend Framework 1.0.2 Released

La version 1.0.2 du Zend Framework est désormais disponible.

Cette version apporte une solution à un bon nombre d'erreurs connues et fournit quelques fonctionnalités mineures, notamment :

  • Nouvel adapteur de base de données PDO_IBM
  • Support des bases Google avec Zend_Gdata_Gbase
  • Support des CAPTCHA ajouté à Zend Gdata
  • Documentation améliorée pour le composant PDF
  • Amélioration des performances de la recherche
  • Amélioration des possibilités de traductions
  • Support additionnel de UTF-8 pour la validation
  • ...

Pour plus d'informations, consulter le changelog.

Septembre 2007 – Rom's blog: Mon rêve de ce soir, un PHP normalisé…

J’adore PHP, je travaille avec ce langage depuis maintenant 8 ans et je le trouve vraiment pratique et tellement facile d’utilisation.
Mais rien n’est parfait dans ce monde et PHP n’échappe pas à cette règle.

A quoi pensaient les développeurs de PHP lorsqu’ils ont pondu les fonctions de gestion des chaînes! Rien n’est normalisé, ni les noms des fonctions, ni leur prototypage, ni les valeurs qu’elles renvoient.

Des exemples ?

C’est parti, trouvez les erreurs :

str_repace() VERSUS strstr()

strip_tags() VERSUS stripslashes()

stripos() VERSUS str_ireplace()

strcasecmp() VERSUS stristr()

html_entity_decode() VERSUS htmlentities()

nl2br() VERSUS strtolower()

str_replace ( mixed $search, mixed $replace, mixed $subject [, int &$count] ) VERSUS strstr ( string $haystack, string $needle )

etc…

Il semblerait que deux bibliothèques ont été réunies, chacune avec des normes à l’opposée de l’autre.

Quelqu’un en saurait plus?

Septembre 2007 – PHP Index: CrawlTrack 2.3.0

La version 2.3.0 de CrawlTrack est disponible.

CrawlTrack vous dit tout sur l'activité des robots sur votre site. Cette nouvelle version s'intéresse aussi aux "mauvais robots", ceux qui utilisé par des hackers peuvent ruiner des heures de travail. CrawlTrack est maintenant capable non seulement de détecter des tentatives de piratage mais aussi de les bloquer avant que le mal ne soit fait.

Site officiel

Proposé par Jean-Denis Brun

Septembre 2007 – PHPortail: Wordpress 2.3 disponible (28/09/07)

La nouvelle version du moteur de blogue WordPress est maintenant disponible.

Cette nouvelle version ajoute :

* l'intégration des tags;
* import de tags de plateformes différentes;
*...

Septembre 2007 – PHPortail: Zend Framework 1.0.2 publié (28/09/07)

Une nouvelle version (1.0.2) du cadre d'application de Zend est désormais disponible.

Cette version corrige 93 erreurs connues et fournit quelques nouvelles fonctionnalités mineures, notamment...

Septembre 2007 – PHPortail: phpMyAdmin 2.11.1 (28/09/07)

Nouvelle version de phpMyAdmin. C'est simplement une version de correction, puisqu'elle corrige une douzaine de bogues assez importants.

Septembre 2007 – PHPortail: Sécurité : PHPIDS 0.4.1 (28/09/07)

Encore une nouvelle version de PHPIDS. Plusieurs corrections de bogues. Les filtres sont plus efficaces : nombre de filtres réduits, plus rapides, meilleures couvertures des types d'attaques, et...

Septembre 2007 – Digital Fashion: Bugfixes release of Zend Framework pagination component

I just released on riskle's assembla space a new version of my pagination component for the Zend Framework which you can download right now:

Riskle Paginate r122

This release fixes a nasty bug in Riskle_Db_Table::fetchCols which prevented from retrieving the right count of cols involved in the query.

The table component has also been slightly rewritten following Erik's suggestion to move the parent mapping into _fetch. The parent mapping itself has been improved to allow "multi level" table joining. This will be best explained with an example:

Say you have three table, Foo, Bar and Quux, and you would like to execute the following query:

SELECT * FROM Foo JOIN Bar ON Foo.bar_id = Bar.id JOIN Quux ON Bar.quux_id = Quux.id

This is now possible with the following mapping (in Foo's class of course):

array(
    'Bar' => array('local' => 'bar_id', 'remote' => 'id'),
    'Quux' => array('local' => 'quux_id', 'remote' => 'Quux.id'),
);

Easy heh ?

As usual, any comments are appreciated, and please note that this code is released under the same license as the ZF itself, the new-bsd license.

Septembre 2007 – Digital Fashion: Bugfixes release of Zend Framework pagination component

I just released on riskle's assembla space a new version of my pagination component for the Zend Framework which you can download right now:

Riskle Paginate r122

This release fixes a nasty bug in Riskle_Db_Table::fetchCols which prevented from retrieving the right count of cols involved in the query.

The table component has also been slightly rewritten following Erik's suggestion to move the parent mapping into _fetch. The parent mapping itself has been improved to allow "multi level" table joining. This will be best explained with an example:

Say you have three table, Foo, Bar and Quux, and you would like to execute the following query:

SELECT * FROM Foo JOIN Bar ON Foo.bar_id = Bar.id JOIN Quux ON Bar.quux_id = Quux.id

This is now possible with the following mapping (in Foo's class of course):

array(
    'Bar' => array('local' => 'bar_id', 'remote' => 'id'),
    'Quux' => array('local' => 'quux_id', 'remote' => 'Quux.id'),
);

Easy heh ?

As usual, any comments are appreciated, and please note that this code is released under the same license as the ZF itself, the new-bsd license.

Septembre 2007 – Digital Fashion: Zend Framework 1.0.2 PEAR package is available

A PEAR package for the 1.0.2 version of the Zend Framework is now available from the PEAR PHPMafia channel. As usual, to install just issue the following:

pear channel-discover pear.phpmafia.net
pear install phpmafia/Zend

Septembre 2007 – Digital Fashion: Zend Framework 1.0.2 PEAR package is available

A PEAR package for the 1.0.2 version of the Zend Framework is now available from the PEAR PHPMafia channel. As usual, to install just issue the following:

pear channel-discover pear.phpmafia.net
pear install phpmafia/Zend