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

Août 2007 – PHP Québec: Invitation BBQ du libre 2007

PHP Québec et LinuQ vous convient, le 12 août 2007 prochain, à sa troisième édition du BBQ du libre. Le BBQ du libre est une occasion pour tout ceux et celles qui s'intéressent, de près ou de loin, aux logiciels libres ainsi qu'à leur famille de se rencontrer afin de s'amuser dans un contexte informel et décontracté. Tournoi de ping pong et jam de musique autour du feux à ne pas manquer. Des prix de présence seront tirés au cours de la soirée.

Visitez notre site pour vous INSCRIRE (obligatoire pour le souper) ou pour obtenir plus d'informations !
www.bbqdulibre.org

Août 2007 – Narno.com: Migration PHP 5 : toujours les polémiques

Après le lancement du projet de migration à PHP 5 'Go PHP 5', les avis continuent de fuser de toutes parts.

Stuart Herbert prend le temps mesurer l'impact économique de rester à PHP 4 face à une migration complète.
Henry Bergius annonce la migration totale de Midgard vers PHP 5, facilitée par leurs choix techniques.

A la veille de produire les statistiques de Juillet pour PHP, les chiffres de juillet seront surement intéressants à voir, après plus d'un mois de campagne Go PHP 5.


[Nexen]

Août 2007 – PHP Index: Compatibilité avec register_globals à On ou à Off

Le journal du Net fournit un exemple pour qu'un programme ne fonctionnant qu'en register_globals=On soit compatible avec register_globals=Off.

La directive PHP register_globals, lorsqu'elle est activée, permet une déclaration automatique des variables issues des tableaux $_GET, $_POST, $COOKIE, $SESSION, ... En cas de mauvaise utilisation, register_globals favorise les trous de sécurité dans une application, ce qui explique sa désactivation par défaut à partir de la version 4.2.0 de PHP. Le journal du Net explique comment reproduire cette déclaration automatique quand register_globals est à Off en une seule ligne de code.

L'article
En savoir plus sur register_globals

Août 2007 – PHP Index: 01net: Gestion de contenu: vers plus de maturité

Le site 01net nous propose un dossier complet sur les différentes solutions de gestion de contenu, et nous indique quelques pistes pour bien choisir son CMS.

Les systèmes de gestion de contenu, ou CMS (Content Management System), sont de plus en plus nombreux et diversifiés. Mais au delà des avantages évidents d'une telle variété, vient la problèmatique du choix d'un outil.

Le dossier de 01net liste quatre points importants à vérifier lors de ce choix:

  1. Assurer la couverture des besoins, en vérifiant que le CMS choisi répond aux besoins, nativement ou à l'aide de plug-ins, sans qu'il soit nécessaire de le modifier.
  2. Valider la pérennité, en s'assurant que le CMS est entouré d'une communauté dynamique, et qu'il dispose de bonnes références.
  3. Maîtriser les coûts, en comptabilisant les dépenses liées à la mise en place du projet, à l'entretien, sans mettre de côté le coût de l'assistance technique, et des professionnels spécialisés.
  4. Simplifier la contribution, on choisissant un outil offrant une interface simple, conviviable, et éventuellement personnalisable.

Enfin, le dossier nous livre une sélection de cinq CMS, chacun accompagné d'un descriptif de l'outil, et d'une liste de ses caractéristiques importantes.

Le dossier de 01net

Août 2007 – Kamelot Blog: Zend Studio Neon

Des captures de Zend Studio Neon dans l'album photos Flickr de Sebastian Bergmann pour montrer l'integration de PHPUnit

Zend Studio Neon sera la version commerciale de PHP Development Tools (PDT) d'Eclipse .

New PHP Project New PHP Class Skeleton for the BankAccount Class The BankAccount Class New PHPUnit Test Case Skeleton for the BankAccountTest Class Running the BankAccountTest Tests

Août 2007 – PHP Index: Asbru Web Content Management 6.5

Version 6.5 of the Asbru Web Content Management system for PHP, ASP and JSP/Java has been released.

The new version of the Asbru Web Content Management system adds Google Sitemap functionality, several new add-ons, and a new user interface that enables non-technical website managers to add functionality packages to their websites in just 2 clicks.

The Asbru Web Content Management System already produces websites with search engine friendly page URLs. The new version 6.5 of the Asbru Web Content Management System improves search engine friendliness further by dynamically generating what are known as Google Sitemaps. The Asbru Web Content Management Google Sitemap solution is tightly integrated with the system so when a website administrator changes the structure of their website through the system’s drag & drop user interface the new website structure is automatically published to a sitemap XML file adhering to the Sitemap protocol supported by Google, Microsoft and Yahoo!. Making such sitemaps available to search engines makes website indexing more efficient for search engines and can provide an improved representation in search engines because it helps them discover and prioritize pages that may otherwise be difficult to find.

Other new features incorporated into Asbru Web Content Management version 6.5 include:

* Multi-level Navigation Menu Generator
The new Multi-level Menu Generator enables non-technical users to design their own horizontal or vertical multi-level navigation menus without any knowledge of HTML or CSS.

* CSS Page Grid Layout Template Generator
The new CSS Template Generator enables non-technical users to add CSS based templates without any knowledge of HTML or CSS.

* Photo Gallery Add-On
The photo gallery add-on presents photos in a lightbox slideshow. Photos can easily be added to or removed from the lightbox slideshow by non-technical users.

* Pluggable Calendar Add-On
The Pluggable Calendar can be used for display of any standard type of content such as news, events and blog entries and for any type of custom data containing dates.

Finally, Asbru Web Content Management 6.5 includes functionality that lets web hosting companies and web developers build industry solutions that can be added by non-technical website managers in just 2 clicks. A web hosting company may for example wish to provide website templates targeting florists and could make these available for non-technical users to select in just 2 clicks.

For an online trial of the system with its new features users can sign up here: http://wcm.asbrusoft.com.

Proposé par David Fisher

Août 2007 – Narno.com: PHPEdit 2.12 : screencast

Afin de présenter le fonctionnement et les possibilités de PHPEdit 2.12, Sébastien Hordeaux (le boss de Waterproof) à réalisé un screencast.

Celui-ci est découper en 5 parties :

  • présentation générale de l'IDE
  • utilisation du debogueur
  • intégration de PHPUnit
  • intéraction avec SQL
  • module FTP

Cette présentation de PHPEdit (en anglais) permet de mieux cerner les possibilités de l'outil et de le voir fonctionner dans les mains d'un utilisateur aguerri.

Pour ma part j'utilise PHPEdit pour mes projets persos et dans le cadre de mon travail. J'en suis très satisfait même si de petit problèmes de statbilité mon casser la tête quelque temps. PHPEdit à énormément évolué depuis plusieurs années et il est devenu un IDE très professionnel pour un coup de license plus que raisonnable !

Si vous ne l'avez pas encore essayé, je vous invite à télécharger PHPEdit sur le site officiel.

en lire plus

Août 2007 – Narno.com: PHPEdit 2.12 : screencast

Afin de présenter le fonctionnement et les possibilités de PHPEdit 2.12, Sébastien Hordeaux (le boss de Waterproof) à réalisé un screencast.

Celui-ci est découper en 5 parties :

  • présentation générale de l'IDE
  • utilisation du debogueur
  • intégration de PHPUnit
  • intéraction avec SQL
  • module FTP

Cette présentation de PHPEdit (en anglais) permet de mieux cerner les possibilités de l'outil et de le voir fonctionner dans les mains d'un utilisateur aguerri.

Pour ma part j'utilise PHPEdit pour mes projets persos et dans le cadre de mon travail. J'en suis très satisfait même si de petit problèmes de statbilité mon casser la tête quelque temps. PHPEdit à énormément évolué depuis plusieurs années et il est devenu un IDE très professionnel pour un coup de license plus que raisonnable !

Si vous ne l'avez pas encore essayé, je vous invite à télécharger PHPEdit sur le site officiel.

Août 2007 – PHP Index: PHP-Nuke 8.1

Libération de la dernière mouture de PHPNuke 8.1, précurseur des CMS et des systèmes de blogs.

PHP-Nuke vient de sortir ce jour en version 8.1.
Comme chaque nouvelle version, PHPNuke 8.1 n'est pas encore disponible gratuitement, il faudra débourser quelques dollars pour s'en acquitter.

Cette nouvelle version comprend:
- ajout de nombreux correctifs de sécurité
- ajout de nombreux contrôles de variables dans plusieurs modules
- ajout du forum phpBB ( BB2nuke en version 2.0.21 )
- ajout du script AutoTheme en version GPL ( il existe aussi une version payante )
- Correctifs appliqués dans le module Topics
- La gestion des préférences dans l'administration a été totalement revue et ré-organisée
- Amélioration de la gestion des référants
- ajout d'une possibilité offerte aux administrateurs de permettre ou non aux utilisateurs de changer de charte graphique ( theme ou template )
- et pas mal d'autres choses :)

Vous pouvez retrouver la version 8.1 sur www.phpnuke.org ( réservée au club ) ainsi que la version 8.0 originale sur www.php-nuke.fr ( la version 100% française est en cours de validation )

Proposé par Cyril Levert

Août 2007 – Nexen.net: Statistiques PHP de juillet 2007

phpversion.cumul
Les statistiques de diffusion PHP dans le monde pour juillet 2007 sont arrivées. PHP 5 passe la barre des 20% du marché PHP PHP 5.2 représente maintenant 10% PHP 4.4.7 est toujours très prisé des webmestres Et toujours beaucoup de détails sur Apache, IIS, les pays, les versions et leur évolution depuis Juin 2005, ainsi que des aides pour choisir les versions de PHP à supporter.

Août 2007 – Narno.com: Statistiques PHP de juillet 2007

"Les statistiques de diffusion PHP dans le monde pour juillet 2007 sont arrivées.
  • PHP 5 passe la barre des 20% du marché PHP
  • PHP 5.2 représente maintenant 10%
  • PHP 4.4.7 est toujours très prisé des webmestres
Et toujours beaucoup de détails sur Apache, IIS, les pays, les versions et leur évolution depuis Juin 2005, ainsi que des aides pour choisir les versions de PHP à supporter."

Source : Nexen

Août 2007 – Narno.com: Statistiques PHP de juillet 2007

"Les statistiques de diffusion PHP dans le monde pour juillet 2007 sont arrivées.
  • PHP 5 passe la barre des 20% du marché PHP
  • PHP 5.2 représente maintenant 10%
  • PHP 4.4.7 est toujours très prisé des webmestres
Et toujours beaucoup de détails sur Apache, IIS, les pays, les versions et leur évolution depuis Juin 2005, ainsi que des aides pour choisir les versions de PHP à supporter."

Source : Nexen

Août 2007 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 155

securite
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes : PHP 5.2.3 et 4.4.7; MySQL 5.0.45 (communauté) et 5.0.46 (entreprise), 4.1.22, ainsi que 5.1.20-beta. Les mises à jour sont recommandées vers ces versions. 8 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes : Drupal, Gallery, Joomla, PHP Nuke, SquirrelMail, WordPress, ez et vBulletin Drupal Multiple Cross-Site Scripting and Request Forger... Site : Pony Gallery Random Image for Joomla "catid" Remote SQL Inject... Site : Pony Gallery Random Image for Joomla "catid" Remote SQL Inject... Site : PHP-Nuke Search Module Cross-Site Scripting Vulnerability Site : SquirrelMail Compose.PHP Multiple Information Disclosure and Data Modification Vulnerabilities Site : WP-FeedStats Plugin for WordPress Script Insertion Vuln... Site : TIBCO Rendezvous RVD Daemon Unspecified Denial Of Service Vulnerability Site : RETIRED: vBulletin Multiple Remote File Include Vulnerabilities Site :

Août 2007 – Nexen.net: Actualité de développement PEAR, edition 150

pear
10 paquets ont été mis à jour cette semaine : : Génération d'images CAPTCHA : Classe de PingBack : Manipulations XPath/DOM XML : Bibliothèque client/serveur XML-RPC : Code source du site PEAR : Analyseur et moteur de rendu Creole pour Text_Wiki : Manipulations de fichiers .htaccess : Normalisateur Unicode : Interface avec l'API Shared book : Interface avec l'API compete PEAR est la bibliothèque de composants PHP.

Août 2007 – Nexen.net: 400ème lettre hebdomadaire de nexen.net

nexen
Dimanche 5 juillet, le numéro 400 de la lettre hebdomadaire de nexen.net a été publiée. Cette lettre émise toutes les semaines, avec la totalité des informations de la semaine qui passe. En un coup d'oeil le lundi matin, vous pouvez passer en revue l'actualité de la semaine précédente, noter les faits importants et conserver le tout dans votre boîte aux lettres. Lorsque vous êtes en vacances, c'est aussi une bonne méthode pour ne rater aucune information. En termes de productivité, il est souvent plus rapide de parcourir la lettre que de lire les RSS ou même le site tous les jours. Vous lisez les titres, puis les articles s'ils vous intéressent, et enfin les URL si elles sont vraiment intéressantes. Le tout en une seule fois dans la semaine. L'inscription est gratuite, et nous aurons bientôt l'occasion de vous faire gagner les livres ainsi que des elephants en peluche PHP. Alors, inscrivez-vous vite pour être de la fête!

Août 2007 – Nexen.net: Développer un service Web avec PHP

serveurs
"Un service Web est constitué d'un serveur qui reçoit les rquêtes, et d'un client qui invoque les méthodes sur le serveur. La bibliothèque de classes PHP fournit les bases pour constituer un serveur SOAP et les clients associés, ainsi que l'extension XML-RPC, pour utiliser le protocole XML-RPC. Avant de plonger dans les détails du développement des services Web, je veut vous présenter rapidement les services eux-mêmes."

Août 2007 – Arnaud Limbourg: Manu Chao

Si vous aimez Manu Chao, un concert restransmis en live du festival Esperanzah va bientôt démarrer sur:

http://www.esperanzah.be/radio/direct/

Août 2007 – PHP Index: Copix 3 RC2 - Framework PHP

Copix est l'un des premiers framework PHP ayant vu le jour et profite aujourd'hui d'une mise à jour vers PHP5 qui, selon les premiers retours utilisateurs, est plus que réussie !

L'équipe de développement a axé ses efforts sur la simplicité de configuration et de prise en main de l'outils, sans oublier les performances et les fonctionnalités avancées comme les transactions multi-sources, un gestionnaire de droit interchangeable, une gestion des webservices aisée, l'utilisation de Mootools pour les applications web 2.0, un système de log pour les applications en production ou développement, des caches, thèmes graphiques, ....

Le site officiel vous proposera quelques tutoriaux (http://www.copix.org/index.php/wiki/Tutoriaux) pour commencer et s'y retrouver dans la grande liste des nouvelles fonctionnalités (http://www.copix.org/index.php/wiki/Presentation).

Bonne découverte !

Proposé par Gérald Croës

Août 2007 – Nexen.net: RPN en PHP

code.php
RPN est la Notation Polonaise Inverse : une manière de gérer la ligne de commande sous forme de pile. J'en garde un souvenir ému de mes années de HP 48 sx : c'était déroutant au début, mais finalement bien pratique et efficace. Nick Halstead nous reviens avec un tutoriel sur RPN, incluant la programmation en PHP d'un analyseur RPN.

Août 2007 – Nexen.net: Normalisateur Unicode en PHP

unicode
La normalisation Unidocde est lié au concept de combinaison et décomposition des caractères en de nouveaux caractères composés, comme le n et le tilde, qui deviennent le caractère n+~. La décomposition est le processus inverse : décomposer un caractère composé en éléments de base. La normalisation est importante pour réaliser la comparaison des caractères, la recherche et le tri. I18N_UnicodeNormalizer est une classe PHP qui permet de réaliser 4 normalisations : NFD, NFC, NFKD, NFKC. Elle est compatible avec les tests de regression officiels Unicode.org. C'est une classe utile pour tous ceux qui doivent valider du code Unicode.

Août 2007 – Nexen.net: Tutoriel PHP, MySQL, Flex et JSON

flex
"Pour faire suite à mon tutoriel PHP et Flex, j'ai pensé qu'il serait sympa de faire un tutoriel complet sur PHP, MySQL, Flex et JSON. Ce tutoriel va montrer comment envoyer des données dans une base MysQL en utilisant Flex, via JSON et PHP. Je vous explique tout cela et bien plus encore."

Août 2007 – Nexen.net: XML dans MySQL : exports

xml
MySQL disposent de fonctions destinées à manipuler du contenu XML directement dans la base, comme les fonctions ExtractValue et UpdateXML, pour rechercher et modifier une structure XML. Pour la production de code XML, il n'y a rien de prévu, mais un coup de procédure stockée vous donnera quelques outils bien pratiques. Erik Wetterberg vous en parle plus.

Août 2007 – Narno.com: Développer un service Web avec PHP

"Un service Web est constitué d'un serveur qui reçoit les rquêtes, et d'un client qui invoque les méthodes sur le serveur.
La bibliothèque de classes PHP fournit les bases pour constituer un serveur SOAP et les clients associés, ainsi que l'extension XML-RPC, pour utiliser le protocole XML-RPC.
Avant de plonger dans les détails du développement des services Web, je veut vous présenter rapidement les services eux-mêmes."

source : Nexen

Août 2007 – Narno.com: Développer un service Web avec PHP

"Un service Web est constitué d'un serveur qui reçoit les rquêtes, et d'un client qui invoque les méthodes sur le serveur.
La bibliothèque de classes PHP fournit les bases pour constituer un serveur SOAP et les clients associés, ainsi que l'extension XML-RPC, pour utiliser le protocole XML-RPC.
Avant de plonger dans les détails du développement des services Web, je veut vous présenter rapidement les services eux-mêmes."

source : Nexen

Août 2007 – Nexen.net: Attention aux scanners de sites

securite
Il existe des robots tapis dans l'ombre du Web et qui attendent leur heure pour massacrer votre site Web. Si vous n'y croyez pas, jetez simplement un oeil à vos logs de serveur Web, notamment le log d'erreur. Vous verrez alors quels sont les menaces qui planent sur votre site. Pour vous en donner une meilleure idée, nous avons analysé les logs de nexen.net, et découvert une ribambelles de robots. Venez donc vous faire peur...

Août 2007 – Nexen.net: D'autre méthodes de représentations graphiques

trucs
Il n'y a pas que les graphiques ou les camemberts dans la vie : il y a de nombreuses méthodes de représentation des données de manières graphiques, adaptés à différentes situations : les cartes mentales (mind map), les cartes de chaleur, les arbres de relations, ou les diagrammes de connexions : Smashing Magazine en a recensé une pleine page pour le plaisir des yeux et l'inspiration.

Août 2007 – Nexen.net: Webinar Cluster MySQL

conference
"Durant ce webinar, nous apprendrons les concepts fondamentaux pour concevoir et sélectionner les bons composants pour réussir un Cluster MySQL et son évaluation. Nous allons analyser le matériel, le réseau et les pré-requis logiciels. Nous travaillerons à partir d'une installation de base, pour réaliser des tests fonctionnels. Finalement, nous terminerons les récents résultats de tests de performances réalisés avec Intel et Dolphin Interconnect Solutions." Il y a deux sessions : la première le 8 Aout, à 19h00, heure de Paris, et la seconde le 15 Aout, à 15h00, heure de Paris.

Août 2007 – Nexen.net: Déboguez avec Xdebug

xdebug
"L'extension Xdebug de PHP vous aide à autopsier votre application quand une erreur ou un crash survient. Voyez comment Xdebug vous permet de retracer les appels de pile, analyser l'utilisation de la mémoire et faire le tri dans les arguments et les variables." Xdebug est récemment passé officiellement en version 2.

Août 2007 – Nexen.net: Multi-tâche en PHP avec stream_select

replication
"De nombreux développeurs PHP croient qu'à cause de l'absence de support des threads de PHP, il est impossible de réaliser une application PHP multi-tâche. Par exemple, si une application doit lire des informations sur un site Web, elle doit s'arrêter et attendre que la lecture distante se conclut. Ce n'est pas vrai! Découvrez le vrai visage du partage de tâche avec PHP, en utilisant les fonctions stream_select et stream_socket_client."

Août 2007 – Nexen.net: MDB2, pour simplifier les changements de serveurs

babel
"Changer de base de donée est une tâche complexe, qui requiert souvent du développeur la recréation manuelle de table et d'enregistrements avec des types SQL et des fonctions compatibles avec la nouvelle base. Le paquet PEAR MDB2_Schema rend cette tâche simple, en générant une représentation agnostique en XML, avec les outils pour importer cette information dans n'importe quelle base."

Août 2007 – PHP Index: Zend Technologies étend son partenariat avec IBM

Zend Technologies étend son partenariat avec IBM pour apporter un support des motées en charge des bases de données sans précédent pour la plateforme PHP

Le 8 août 2007, LinuxWorld San Francisco – Zend Technologies Inc, annonce le renforcement de son partenariat avec IBM avec l’objectif de favoriser la croissance des applications PHP prêtes pour la production dans l’entreprise. Grâce à une intégration plus étroite de Zend Core for IBM et IBM DB2, les entreprises pourront désormais déployer PHP et DB2 sur un grand choix de matériel et de systèmes d’exploitation, tout en bénéficiant d’un support de classe mondiale provenant d’une seule source.


Selon les termes de l’accord, cette initiative comprend :

• Des capacités Express-C d’IBM DB2 améliorées dans Zend Core for IBM, la solution PHP certifiée de Zend Technologies
• Un nouveau support pour la technologie DB2 Connect avec l’accès aux serveurs de données hautes-performances i5/OS et z/OS DB2
• Support unifié et provenant d’une seule source pour la distribution intégrée des solutions PHP et DB2
• Support des partitions System i Linux, du BladeCenter System i et des serveurs System x


Zend Core for IBM est une distribution PHP totalement certifiée et supportée pour le développement et le déploiement d’applications, et qui comprend Apache, PHP, le Zend Framework et DB2 Express-C. DB2 Express-C est le serveur de données hybride relationnel-XML d’IBM qui fournit un accès aux fonctionnalités telles que la réplication de données, le clustering en mode haute disponibilité et la récupération d’incident. Il en résulte une infrastructure pour applications web d’une grande extensibilité et fiabilité.

Afin de pouvoir supporter des charges de travail importantes, Zend Core for IBM comprend désormais la technologie DB2Connect, qui facilite la création d’applications PHP stratégiques utilisant la puissance et l’extensibilité de DB2 sur les serveurs IBM System z(z/OS) et System i (i5/OS).

«PHP et DB2 sont des technologies importantes pour le développement d’applications Web avec de gros volumes de données générées par l’utilisateur » déclare Bernie Spang, Directeur des Serveurs de Données IBM. « DB2 Express-C dans Zend Core for IBM fournit une solution puissante, abordable et extensible pour l’entreprise quelle que soit sa taille, aussi bien pour une PME que pour une entreprise Internet de taille importante. »
Zend Core for IBM fournit des fonctionnalités standardisées à travers une gamme importante de matériels et de systèmes d’exploitation d’IBM. Les gammes de produits complètes IBM System x sous Windows ou Linux et IBM System p sous Linux ou AIX sont supportées. Zend et IBM propose également Zend Core for i5/OS, une solution PHP i5/OS native, qui utilise les capacités de DB2 de ce système d’exploitation.
Zend continuera à développer son support pour System i en rajoutant le support pour les partitions Linux, celui pour le BladeCenter associé à System i et pour les serveurs System x. Les clients du System i pourront consolider de multiples serveurs d’applications PHP et des serveurs de données DB2 Express-C sur une seule plateforme avec une administration et une gestion unifiée.
«Zend Core for IBM est une solution formidable pour les clients qui prévoient une croissance future. » explique Mark de Visser, Chief Marketing Officer chez Zend. «On peut démarrer avec un système d’entrée de gamme System x et ensuite évoluer vers des systèmes plus puissants tels que System p, System i et même System z en bénéficiant de la cohérence inter-plateforme de la solution Zend Core ».
Les clients qui recherchent un support pour leurs applications stratégiques peuvent acheter des abonnements annuels au support Zend pour leur environnement PHP avec le serveur de données DB2 Express-C. Tous les services sont fournis par Zend avec le soutien des ressources techniques globales d’IBM.
Shaklee Corporation, l’entreprise numéro un aux Etats-Unis dans le domaine de l’alimentation bio est un exemple d’un client qui s’est tourné vers Zend et IBM pour le support de son infrastructure PHP. « Nous considérons Zend Core, Zend Platform et DB2 comme des technologies clés dans notre commerce qui est basé sur le Web » explique Chris Jones, Directeur des applications Web chez Shaklee. « C’est encourageant de voir une telle coopération entre Zend et IBM qui fournissent une offre comprenant une solution avec le support totalement intégrée»
Zend Core for IBM est disponible chez Zend www.zend.com/fr/core/ibm

Proposé par Zend Technologies

Août 2007 – Noplay: Bonnes pratiques de développement en PHP

Le but de cet article est de lister un certains nombre de points important auxquels il faut songer lors du développement en PHP. PHP est tellement simple à apprendre que la majorité des développeurs sont autodidactes et ont parfois pris de (très) mauvaises habitudes.

Activez toutes les erreurs

Lors de la phase de développement il est préférable d'activer tous les warnings : cela vous permettra notamment de connaître les variables non déclarées (ca simplifera le développement).

Coupez les erreurs

Par contre sur un site en production il est recommandé de couper les Warnings afin de ne pas fournir aux pirates de précieuses informations : de plus cela est du plus mauvais effet pour les visiteurs.

Une bonne pratique peut-être de mettre en place un systèmes pour être alerté en cas de soucis. Comme par exemple une notification des erreurs par mail : Un exemple chez Zend

Les short tags

Lorsque vous voulez insérer du code php dans une page n'utilisez pas les short tags :

<?

mais

<?php

. Cela pourrait créer des conflits avec d'autres langages (comme le XML) et l'option est désactivée par défaut.

Les register globals

Avant la version 4.2 de PHP il était possible d'accéder directement aux variables de l'url ou d'un formulaire juste en utilisant leur nom. Pour des raisons de sécurité cette option est désormais coupée par défaut. Mais cette option est toujours activée chez de nombreux hébergeur afin de rester compatible avec les anciens scripts.

Ainsi pour accéder à la variable test de :


http://www.noplay.net/index.php?test=tata

Utilisez $_GET['test'] plutôt que $test.

Plus d'informations sur phpdebutant

Nommez les sessions

Lors de l'utilisation des sessions avant de faire un session_start utilisez session_name afin de mettre un nom de session propre à votre site ce qui vous évitera de mauvaises surprises sur certains serveur.

session_name

include_once et require_once

Lorsque vous incluez un fichier contenant des classes et des fonctions utilisez include_once si le fichier doit-être inclus de façon conditionnelle et require_once si il doit toujours être inclus.

La seul différence entre require et include est leur comportement en cas d'echec : require provoquera une FATAL ERROR alors que include affichera juste un WARNING.

Les versions once de include et require évite que le fichier soit inclus deux fois ce qui vous permet de ne pas redéfinir les fonctions.

L'explication sur PEAR

La sécurité

Les conseils qui suivent concernent la sécurité de vos scripts ; en effet en PHP l'apprentissage est tellement simple que l'aspect sécurité est souvent négligé.

Je vous recommande les articles de http://www.phpsecure.info (en français pour ne rien gacher :D).

Vous devez toujours garder à l'esprit qu'il ne faut jamais faire confiance à l'utilisateur.

N'utilisez jamais de variable utilisateur dans un include ou un fopen

Ne faites jamais :


include $_GET['page'];

En effet un pirate pourrait détourner votre inclusion vers un autre fichier sur votre serveur ou sur un autre. Pour faire ce genre chose, effectuez un controle auparavant comme par exemple :


if ($_GET['page'] == 'forum' || $_GET['page'] == 'news') {
include $_GET['page'];
}

Évidemment vous pouvez faire plus propre.

Protéger vos requêtes SQL

Afin de vous prémunir de l'injection SQL vous devez protéger les variables que vous utilisez dans vos requêtes SQL.

Il est possible d'utiliser pour cela addslashes mais si vous devez insérer des données binaires dans MySQL il vaut mieux utiliser : mysql_real_escape_string.

Note : il est possible que la directive magic_quote de PHP soit activée et protége automatiquement les variables utilisateurs, mais cette option est de plus en plus souvent désactivée pour des raisons de performance. Vous pouvez tester si cette option est activée avec get_magic_quotes_gpc.

Exemple d'utilisation de addslashes :


if (!get_magic_quotes_gpc()) {
$nom = addslashes($_POST['nom']);
}
else {
$nom = $_POST['nom'];
}

Échappez le HTML et le PHP

Comme pour les requêtes SQL pensez à supprimer le code PHP et HTML afin de vous prémunir contre le Cross Site Scripting, cela peut-être fait avec la fonction htmlspecialchars ou stript_tags. La différence entre stript_tags et htmlspecialchars vient du faite que la première supprime le contenu alors que la seconde le remplace par des caractères protégés.

Lorsque vous utilisez htmlspecialchars faite attention à utiliser le bon charset. Le charset par défaut étant iso-8859-1.

Faites un hash des mots de passes

Ne stockez jamais un mot de passe en clair, en effet si quelqu'un parvenait à s'introduire sur votre site web il aurait directement accés à tous les mots de passe des utilisateurs. Les utilisateurs utilisant bien souvent le même mot de passe partout, les conséquences pourraient être très graves.

Appliquez plutôt une fonction de hashage sur le mot de passe. Celle ci va calculer une chaine de taille fixe à partir du mot de passe avec laquelle il est impossible techniquement de revenir en arrière.

Lorsque l'utilisateur voudra se connecter vous n'aurez qu'à comparer le hash du mot de passe soumis avec celui que vous aviez stocké.

SHA1 MD5

Changer l'id de session

Utilisez la fonction session_regenerate_id afin de changer l'id de session lorsque un utilisateur se connecte. Cela permet de limiter le vol de session.

Vérifiez le retour des fonctions systèmes

Vérifiez toujours le retour de toutes les fonctions systèmes, notament fopen, obstart...

Style de dévellopement

Je vous recommande de lire sur les conventions de codage de PEAR afin d'écrire du code propre et lisible par le plus grand nombre.

http://pear.php.net/manual/fr/stand...

Remerciements

Je tiens à remercier Darzee, Snowcat et Stem pour leurs remarques sur cet article.

Août 2007 – Noplay: Traduction de la doc du module Zend_Pdf

J'ai traduit la partie de la documentation du Zend_Framework version 0.1.2 concernant le module Zend_Pdf. Ce travail sera intégré au reste de la traduction en français.

http://duponchelle.info/julien/zend...

Août 2007 – Noplay: Traduction du Zend Framework

Désormais la traduction du manuel du Zend Framework auquel j'ai participé est disponible sur le site officiel du framework : http://framework.zend.com/manual/fr...

Août 2007 – Nexen.net: Architecture de YouTube

youtube
"YouTube a connu une croissance fulgurante, jusqu'à 100 millions de vidéos vues par jour, avec seulement une poignée de responsables pour assurer le développement du site. Comment ont-ils assuré la livraison des vidéos aux visiteurs? et comment ont-ils évolué depuis leur acquisition par Google? " Une revue détaillée de l'architecture de YouTube, avec ses essais, ses erreurs et ses réussites.

Août 2007 – Nexen.net: Top 50 des extensions PHP

checklist
Je reçois régulièrement des demandes d'auteurs d'applications pour calibrer les pré-requis d'une application qu'ils vont développer. Il faut faire un choix entre différentes extension, ou bien entre différentes versions de PHP. Faut-il supporter PHP 5.0.4 ou bien est-ce que 5.0.5 est suffisant? Est-ce que mysqli est bien adopté? mnogosearch est puissant, mais peut-on compter sur sa présence? Si vous êtes dans cette phase de votre projet, je vous conseille deux sources : les statistiques mensuelles de nexen.net, qui vous fournissent notamment le graphique de cumul des versions de PHP. Vous pourrez alors déterminer le point à partir duquel il n'est plus utile de supporter de vieilles version de PHP. Et les configurations de base de PHP 5.2.3, qui vous donne le niveau de popularité des extensions PHP pour PHP 5.2.3.

Août 2007 – Nexen.net: MySQL change sa politique pour la communauté

mysql.communaute
Kaj Arnö annonce par le biais de son blogue, un changement important dans la politique de publication du code source 'Entreprise' de MySQL. Les nouvelles fonctionnalités sont désormais envoyées directement dans les nouvelles versions. MySQL s'engage à faire au moins 2 mises à jour de la version de production (dite GA) par an, en fonction des alertes de sécurité qui seront identifiées. Les versions MySQL seront mises à jour tous les mois jusqu'à ce que la compagnie décide que cette version est mature : dans ce cas, le rythme de mise à jour baissera considérablement. Les sources de la version Entreprise ne sont plus publiées. Dans l'ensemble, le processus de publication se clarifie, ce qui est bon : les versions très stables n'ont plus que des corrections de bogues et sécurité. Les nouvelles fonctionnalités sont repoussées à la version de développement, et les versions de productions initiales, qui auront la plus forte charge de tests, seront mises à jour mensuellement. Deux points plus sensibles sont à relever. Les sources de la version Entreprise sont retirées. Cela ne fait qu'ajouter un obstacle sur la rue, puisque la GPL permet à n'importe quel client de publier ce code librement. Le code était déjà bien caché dans le ftp de MySQL, mais il est encore plus loin maintenant. Les nouvelles fonctionnalités et contributions de la communauté sont repoussées à la versions de développement actuelle. Nous sommes rendus à la version 5.0 en GA, et la version 5.1 (qui arrive sous peu), est en béta : en fait, les nouvelles contributions sont repoussées à la version 5.2/6.0, et n'apparaîtront pas avant ... longtemps. Tres longtemps. La communauté des contributeurs au code réagit fortement à ces annonces. Peter Zaitsev indique qu'il a un patch de micro-secondes pour les slow query qui attend encore, alors que Jeremy Cole a recu un traitement de faveur pour son SHOW profile. Tous ces contributeurs ayant pignon sur rue, montent au créneau pour défendre leur travail. En regardant de plus loin, il semble que la communauté soit incitée à travailler sur les versions récentes uniquement. Plus la version du serveur est stable (beta, GA, mature GA), plus les versions sont rares. Les versions payantes sont ainsi réservées à ceux qui ne connaissent pas bien MySQL : ce sont eux qui iront chercher les mature GA ou les versions entreprise, pour se prémunir d'un bug possible. La communauté ne paie pas cher, mais court les risques. Les clients paient peu cher, mais s'assure contre les bogues. Est-ce un modèle viable pour votre entreprise? Avec un rythme de mise à jour annuel des serveurs (qui donc utilise encore une version 4?), cette nouvelle politique devrait avoir un faible impact sur une installation en production. Les nouvelles fonctionnalités seront reportées à l'année d'après, et il ne reste que le cas des bogues teigneux à corriger : avoir besoin d'une correction spécifique va devenir compliqué, ou cher, ou les deux. Enfin, la disparition des codes sources entreprise sont surtout des sujets politiques : tant qu'on est pas impacté par un bogue, on va facilement en sauter quelques versions. Mais c'est dommage de voir ce point mis tout à la fin, et publié en pleines vacances : on dirait une vieille manipulation politique ou commerciale, alors que ça n'en est pas.

Août 2007 – Nexen.net: Actualité de développement PECL, edition 162

pecl
2 paquets ont été mis à jour cette semaine : : Pilote PDO pour les bases de données IBM : Interface Trivial DB PECL est la bibliothèque d'extensions C de PHP.

Août 2007 – Nexen.net: MySQL change sa politique pour la communauté

mysql.communaute
Kaj Arnö annonce par le biais de son blogue, un changement important dans la politique de publication du code source 'Entreprise' de MySQL. Les nouvelles fonctionnalités sont désormais envoyées directement dans les nouvelles versions. MySQL s'engage à faire au moins 2 mises à jour de la version de production (dite GA) par an, en fonction des alertes de sécurité qui seront identifiées. Les versions MySQL seront mises à jour tous les mois jusqu'à ce que la compagnie décide que cette version est mature : dans ce cas, le rythme de mise à jour baissera considérablement. Les sources de la version Entreprise ne sont plus publiées. Dans l'ensemble, le processus de publication se clarifie, ce qui est bon : les versions très stables n'ont plus que des corrections de bogues et sécurité. Les nouvelles fonctionnalités sont repoussées à la version de développement, et les versions de productions initiales, qui auront la plus forte charge de tests, seront mises à jour mensuellement. Deux points plus sensibles sont à relever. Les sources de la version Entreprise sont retirées. Cela ne fait qu'ajouter un obstacle sur la rue, puisque la GPL permet à n'importe quel client de publier ce code librement. Le code était déjà bien caché dans le ftp de MySQL, mais il est encore plus loin maintenant. Les nouvelles fonctionnalités et contributions de la communauté sont repoussées à la versions de développement actuelle. Nous sommes rendus à la version 5.0 en GA, et la version 5.1 (qui arrive sous peu), est en béta : en fait, les nouvelles contributions sont repoussées à la version 5.2/6.0, et n'apparaîtront pas avant ... longtemps. Tres longtemps. La communauté des contributeurs au code réagit fortement à ces annonces. Peter Zaitsev indique qu'il a un patch de micro-secondes pour les slow query qui attend encore, alors que Jeremy Cole a recu un traitement de faveur pour son SHOW profile. Tous ces contributeurs ayant pignon sur rue, montent au créneau pour défendre leur travail. En regardant de plus loin, il semble que la communauté soit incitée à travailler sur les versions récentes uniquement. Plus la version du serveur est stable (beta, GA, mature GA), plus les versions sont rares. Les versions payantes sont ainsi réservées à ceux qui ne connaissent pas bien MySQL : ce sont eux qui iront chercher les mature GA ou les versions entreprise, pour se prémunir d'un bug possible. La communauté ne paie pas cher, mais court les risques. Les clients paient peu cher, mais s'assure contre les bogues. Est-ce un modèle viable pour votre entreprise? Avec un rythme de mise à jour annuel des serveurs (qui donc utilise encore une version 4?), cette nouvelle politique devrait avoir un faible impact sur une installation en production. Les nouvelles fonctionnalités seront reportées à l'année d'après, et il ne reste que le cas des bogues teigneux à corriger : avoir besoin d'une correction spécifique va devenir compliqué, ou cher, ou les deux. Enfin, la disparition des codes sources entreprise sont surtout des sujets politiques : tant qu'on est pas impacté par un bogue, on va facilement en sauter quelques versions. Mais c'est dommage de voir ce point mis tout à la fin, et publié en pleines vacances : on dirait une vieille manipulation politique ou commerciale, alors que ça n'en est pas.

Août 2007 – Nexen.net: Les meilleurs validations pour votre site web

checklist
Les tests automatiques, vérifications, audits et analyses sont incontournables si vous recherchez des bogues et tentez de les éviter. Pour vous assurer que tout baigne dans l'huile, vous avez besoin de validateurs. Smashing Magazine en dresse la liste, point par point. 1. Connaît ton classement 2. Utilise la puissance des tests d'accessibilité 3. Suit ta progression en permanance 4. Assure-toi que ton site est prêt pour les moteurs 5. Détecte les points faibles et supprime les 6. Assure les meilleures performances 7. Assure la meilleure qualité de contenu 8. Surveille tes utilisateurs 9. Analyse ta population 10. Connaît toi toi-même

Août 2007 – Nexen.net: Les meilleurs validations pour votre site web

checklist
Les tests automatiques, vérifications, audits et analyses sont incontournables si vous recherchez des bogues et tentez de les éviter. Pour vous assurer que tout baigne dans l'huile, vous avez besoin de validateurs. Smashing Magazine en dresse la liste, point par point. 1. Connaît ton classement 2. Utilise la puissance des tests d'accessibilité 3. Suit ta progression en permanance 4. Assure-toi que ton site est prêt pour les moteurs 5. Détecte les points faibles et supprime les 6. Assure les meilleures performances 7. Assure la meilleure qualité de contenu 8. Surveille tes utilisateurs 9. Analyse ta population 10. Connaît toi toi-même

Août 2007 – Nexen.net: PHP répond aux problèmes d'entreprise

grue
"Quand vous choisissez un langage ou une plate-forme pour votre projet, vous devez vous poser quelques questions importantes: Est-ce que le langage est fiable? Est-ce que le langage a une communauté robuste? Est-il facile de trouver des programmeurs qui utilisent ce langage? Est-ce que le langage est productif? Toutes ces questions engendrent des coûts relatifs. En bref, si l'un de ces problèmes est particulièrement difficile à résoudre, cela va vous coûter plus d'argent : et parfois beaucoup plus."

Août 2007 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 156

PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes : PHP 5.2.3 et 4.4.7; MySQL 5.0.45 (communauté) et 5.0.45 (entreprise), 4.1.22, ainsi que 5.1.20-beta. Les mises à jour sont recommandées vers ces versions. 4 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes : Gallery, Joomla, ez et vBulletin Gallery In A Box Index.ASP SQL Injection Vulnerability Site : PHP remote file inclusion vulnerability in langset.php in the J! Reactions (com_jreactions) component for Joomla! allows remote attackers to execute arbitrary PHP code via a URL in the comPath parameter. Site : TIBCO Rendezvous RVD Daemon Remote Denial Of Service Vulnerabilities Site : ** DISPUTED ** Multiple PHP remote file inclusion vulnerabilities in Jelsoft vBulletin 3.6.5 allow remote attackers to execute arbitrary PHP code via a URL in the (1) classfile parameter to includes/functions.php, the (2) nextitem parameter to includes/fu Site :

Août 2007 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 156

PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes : PHP 5.2.3 et 4.4.7; MySQL 5.0.45 (communauté) et 5.0.45 (entreprise), 4.1.22, ainsi que 5.1.20-beta. Les mises à jour sont recommandées vers ces versions. 4 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes : Gallery, Joomla, ez et vBulletin Gallery In A Box Index.ASP SQL Injection Vulnerability Site : PHP remote file inclusion vulnerability in langset.php in the J! Reactions (com_jreactions) component for Joomla! allows remote attackers to execute arbitrary PHP code via a URL in the comPath parameter. Site : TIBCO Rendezvous RVD Daemon Remote Denial Of Service Vulnerabilities Site : ** DISPUTED ** Multiple PHP remote file inclusion vulnerabilities in Jelsoft vBulletin 3.6.5 allow remote attackers to execute arbitrary PHP code via a URL in the (1) classfile parameter to includes/functions.php, the (2) nextitem parameter to includes/fu Site :

Août 2007 – Nexen.net: PHP répond aux problèmes d'entreprise

grue
"Quand vous choisissez un langage ou une plate-forme pour votre projet, vous devez vous poser quelques questions importantes: Est-ce que le langage est fiable? Est-ce que le langage a une communauté robuste? Est-il facile de trouver des programmeurs qui utilisent ce langage? Est-ce que le langage est productif? Toutes ces questions engendrent des coûts relatifs. En bref, si l'un de ces problèmes est particulièrement difficile à résoudre, cela va vous coûter plus d'argent : et parfois beaucoup plus."

Août 2007 – Kamelot Blog: Manuel de PHP_codesniffer

Traduction en cours : php_codesniffer

Si ca vous intéresse, n'hésitez pas à me signaler les éventuelles probables erreurs.

Août 2007 – Digital Fashion: Stripping the logic: the Transfer Object

Sometimes you have to pass an object data to another object, or to another layer of your application (who said controller/view ?), while ensuring that the receiving entity will not be able to run business code encapsulated in your class. In the Zend Framework, several objects provide a toArray method, but that is not always sufficient as sometimes you'd like to keep with the $object->varname syntax.

That is where the Transfer Object arrives. While the preceding definition is not exact (that's not the real purpose of the Transfert Object in the J2EE spirit), This is the most common use that PHP Developers can make of it nowadays I think. So I came up with a very light implementation of a concept which I hope can prove useful for any folks getting by there.

See also:

Août 2007 – Nexen.net: Je suis certifié MySQL

mysql
Je ne sais pas si cela va surprendre beaucoup de monde, mais j'ai passé la certification de base MySQL. Si, si. Et contrairement à celle de PHP, je ne connaissais pas les questions avant de passer l'examen. :) Pour tout vous dire, Carsten Perdersen et Roland Bouman était en train de tester leur nouvel examen de certification pour les utilisateurs MySQL. C'est le 'MySQL certified exam' qui me donne le titre de 'MySQL certified associate'. Impressionnant, n'est-ce pas? L'examen était destiné à des utilisateurs de base de MySQL : il couvrait les aspects les plus importants pour une utilisation autonome et efficace de la base. Les requêtes, bien sûr, mais aussi quelques points de configuration, d'administration. Les questions du tests étaient très exhaustives, et couvraient une très large gamme de problème. Un développeur qui passe cet examen saura utiliser MySQL intelligemment, et ne rapportera que des problèmes intéressants à un administrateur.Enfin, j'ai été particulièrement surpris par la quantité de 'cadeaux' qui étaient livrés avec le diplome de certification. Je vous laisse juger par vous-même : 2 stylos MySQL, un ballon de plage, un boomrang....

Août 2007 – Nexen.net: Je suis certifié MySQL

mysql
Je ne sais pas si cela va surprendre beaucoup de monde, mais j'ai passé la certification de base MySQL. Si, si. Et contrairement à celle de PHP, je ne connaissais pas les questions avant de passer l'examen. :) Pour tout vous dire, Carsten Perdersen et Roland Bouman était en train de tester leur nouvel examen de certification pour les utilisateurs MySQL. C'est le 'MySQL certified exam' qui me donne le titre de 'MySQL certified associate'. Impressionnant, n'est-ce pas? L'examen était destiné à des utilisateurs de base de MySQL : il couvrait les aspects les plus importants pour une utilisation autonome et efficace de la base. Les requêtes, bien sûr, mais aussi quelques points de configuration, d'administration. Les questions du tests étaient très exhaustives, et couvraient une très large gamme de problème. Un développeur qui passe cet examen saura utiliser MySQL intelligemment, et ne rapportera que des problèmes intéressants à un administrateur.Enfin, j'ai été particulièrement surpris par la quantité de 'cadeaux' qui étaient livrés avec le diplome de certification. Je vous laisse juger par vous-même : 2 stylos MySQL, un ballon de plage, un boomrang....

Août 2007 – PHP Index: SV PHP-Nuke 8.1.02

Bonjour,

L'équipe du site Stefvar est heureuse de vous annoncer la mise à disposition de SV PHP-Nuke 8.1.02. Cette dernière est une évolution majeure de PHP-Nuke 8.1 conformément à la licence GNU/GPL troisième du nom.

Les principale évolutions sont :
- la mise à jour du forum en version 2.0.22
- la mise en place de système de cache en version 2.0.00
- la mise en place de divers correctifs de sécurité
- la mise en place d'un système de suivi de version et de mise à jour automatique
- L'étoffement de l'installeur automatique permettant le choix des préfixes des tables.

Cette version est disponible sur le site :
http://www.stefvar.com

Il est à noter que depuis le mois de juillet 2007, il est demandé un euro de contribution, reversé entièrement au profit de l'association SIDACTION, pour accéder aux ressources téléchargeables, merci.

Proposé par stefvar

Août 2007 – Nexen.net: Choisir parmi 5 framework

framework
TheCredence procède à une comparaison rapide de 5 frameworks : , , , et pour vous guider dans votre choix d'un framework PHP.

Août 2007 – Nexen.net: Actualité de développement PEAR, edition 151

pear
5 paquets ont été mis à jour cette semaine : : Vérificateur DNSBL : Détection des violation de convention de codage : Gestion dynamique d'arbres, avec support des bases et XML : Implémentation de FIT : FIT: Framework for Integrated Test : Interface avec l'API Shared book PEAR est la bibliothèque de composants PHP.

Août 2007 – Nexen.net: Choisir parmi 5 framework

framework
TheCredence procède à une comparaison rapide de 5 frameworks : , , , et pour vous guider dans votre choix d'un framework PHP.

Août 2007 – Nexen.net: Actualité de développement PEAR, edition 151

pear
5 paquets ont été mis à jour cette semaine : : Vérificateur DNSBL : Détection des violation de convention de codage : Gestion dynamique d'arbres, avec support des bases et XML : Implémentation de FIT : FIT: Framework for Integrated Test : Interface avec l'API Shared book PEAR est la bibliothèque de composants PHP.

Août 2007 – Kamelot Blog: Token

Je suis en train de traduire la documentation du package pear PHP_codeSniffer, et je me demandais comment traduire le terme "token" parce que la traduction que j'en connaissais (jeton) ne me semblait pas correspondre. J'ai jeté un oeil sur wikipedia et j'y ai trouvé la réponse : Lexème

Le lexème est le morphème lexical d'un lemme, c'est-à-dire une unité de sens et de son qui n'est pas fonctionnelle ou dérivationnelle. Le lexème renvoie à une notion abstraite ou concrète indépendante de la situation de communication.

C'est un synonyme de radical dans la plupart des cas, surtout utilisé dans le cadre de la lexicologie en synchronie. En effet, diachroniquement, radical et lexème peuvent ne pas coïncider.

Ceci étant fait, il me reste à traduire correctement "tokenizer"

Août 2007 – sahid.funraill.org: HTTPRequest, Gestion des requêtes en PHP

Une classe PHP5 pour gérer les requêtes passées notre application

Une classe outil qui peut être réutilisée et complétée pour gérer les requêtes POST et GET passées votre application.

Fonctionnement de la classe HttpRequest

La classe est assez simple et plutÎt utile, elle est complÚtement réutilisable (cela me fait penser que PHP6 et l’arrivée des espaces de nom (namespaces) sera une trÚs bonne nouvelle pour la communauté PHP. Car le manque de cette fonctionnalité commence réellement se faire sentir avec les multiples classes et frameworks qui voient le jour !), utilisée via un frontController elle permet d’intercepter les requêtes passées l’application sous toutes ses couches et les nettoie en fonction du type retourner.

Exemple d’utilisation

  1. <?php
  2.          $request = new HttpRequest;
  3.  
  4.          # RécupÚre la valeur d’un "module" alphabétique
  5.    $module = $request->getAlpha (‘module’);
  6.  
  7.    # RécupÚre les valeurs d’un formulaire
  8.          $nom = $request->getAlpha (‘nom’); // alphabétique
  9.          $mdp = $request->getAlnum (‘mdp’); // alphanumérique
  10.          $mnt = $request->getFloat (‘mnt’); // flottantes (ex : un montant)
  11.         
  12.          $usr_id = $request->getInt (‘usr_id’); // entier
  13.  
  14.          # RécupÚre les valeurs, sans les échapper (__get)
  15.          $mix = $request->mixedParam ();
  16. // HttpResquest, Gestion des requêtes en PHP
  17.    # Ajoute un nouveau paramÚtre (__set)
  18.    $request->newParam = “Hello World”;  
  19. ?>

A voir…

Au niveau du constructeur de la classe, j’utilise un array_merge pour récupérer les tableaux GET et POST, mais peut être que placer un paramÚtre au constructeur permettrait une meilleure souplesse de la classe.

  1. <?php
  2. class HttpRequest_2 {
  3.          private $_request;
  4.  
  5.          public function __construct ($array) {
  6.            $this->_request = $array;
  7.    }
  8.    // …
  9. }

Ainsi on peut choisir quels sont les types de variable qu’on souhaite récupérer…

  1. <?php
  2. # POST
  3. $request = new HttpRequest ($_POST);
  4.  
  5. # GET
  6. $request = new HttpRequest ($_GET);
  7.  
  8. # POST et GET
  9. $request = new HttpRequest (array_merge ($_POST, $_GET));
  10.  
  11. # POST, GET, COOKIE
  12. $request = new HttpRequest ($_REQUEST);
  13.  
  14. # ou toute autre variante …
  15. ?>

La classe HttpRequest complete

  1. <?php
  2.  
  3.         /**
  4.          * Ferdjaoui Sahid <sahid@funraill.org>
  5.          * http://sahid.funraill.org
  6.          *
  7.          * @copyright Copyright (c) 2007 Ferdjaoui Sahid
  8.          */
  9.  
  10. /**
  11. * HttpRequest, Gestion des requêtes passées   l’application
  12. *
  13. * @category HTTP
  14. * @package  HttpRequest
  15. */
  16. class HttpRequest
  17. {
  18.         private $_request;
  19.  
  20.         /**
  21.          */
  22.         public function __construct ()
  23.         {
  24.                 $this->_request = array_merge ($_POST, $_GET);
  25.         }
  26.  
  27.         /**
  28.          * Retourne la valeur d’un paramÚtre passé   l’appli
  29.          *
  30.          * @param mixed $key
  31.          * @return mixed
  32.          */
  33.         public function get ($key)
  34.         {
  35.                 return array_key_exists ($key, $this->_request)
  36.                         ? $this->_request[$key] : false;
  37.         }
  38.  
  39.         /**
  40.          * Ajoute un nouveau paramÚtre
  41.          *
  42.          * @param mixed $key
  43.          * @param mixed $val
  44.          */
  45.         public function set ($key, $val)
  46.         {
  47.                 $this->_request[$key] = $val;
  48.         }
  49.  
  50.         /**
  51.          * Mapping des méthodes get et set via l’utilisation de __get et __set
  52.          */
  53.         public function __get ($key) { return $this->get ($key); }
  54.         public function __set ($key, $val) { $this->set ($key, $val); }
  55.  
  56.         /**
  57.          * Retourne une chaîne de caractÚres alphabétiques
  58.          *
  59.          * @param mixed $key
  60.          * @return string
  61.          */
  62.         public function getAlpha ($key)
  63.         {
  64.                 return preg_replace (‘/[^[:alpha:]]/’, , $this->get ($key));
  65.         }
  66.  
  67.         /**
  68.          * Retourne une chaîne de caractÚres alphanumériques
  69.          *
  70.          * @param mixed $key
  71.          * @return string
  72.          */
  73.         public function getAlnum ($key)
  74.         {
  75.                 return preg_replace (‘/[^[:alnum:]]/’, , $this->get ($key));
  76.         }
  77.  
  78.         /**
  79.          * Retourne et convertit une chaîne en nombre   virgule flottante
  80.          *
  81.          * @param mixed $key
  82.          * @return integer
  83.          */
  84.         public function getInt ($key)
  85.         {
  86.                 return intval ($this->get ($key));
  87.         }
  88.  
  89.         /**
  90.          * Retourne une valeur   virgule flottante
  91.          *
  92.          * @param mixed $key
  93.          * @return float
  94.          */
  95.         public function getFloat ($key)
  96.         {
  97.                 return floatval ($this->get ($key));
  98.         }
  99.  
  100.         /**
  101.          * Retourne le nom du dossier qui contient le fichier ou dossier
  102.          *
  103.          * @param mixed $key
  104.          * @return mixed
  105.          */
  106.         public function getDir ($key)
  107.         {
  108.                 return dirname ($this->get ($key));
  109.         }
  110.  
  111.         /**
  112.          * Retourne le chemin canonique absolu
  113.          *
  114.          * @param mixed $key
  115.          * @return mixed
  116.          */
  117.         public function getPath ($key)
  118.         {
  119.                 return realpath ($this->get ($key));
  120.         }
  121.  
  122.         /**
  123.          * Retourne le tableur Requête
  124.          */
  125.         public function getRequest () { return $this->_request; }
  126. }

Août 2007 – Narno.com: Choisir parmi 5 framework PHP

"TheCredence procède à une comparaison rapide de 5 frameworks : Zend Framework, Symphony, Prado framework, CakePHP et CodeIgniter pour vous guider dans votre choix d'un framework PHP."

Source : Nexen

L'article de TheCredence : PHP frameworks - Which one is Most Suitable for you?

Août 2007 – Narno.com: Choisir parmi 5 framework PHP

"TheCredence procède à une comparaison rapide de 5 frameworks : Zend Framework, Symphony, Prado framework, CakePHP et CodeIgniter pour vous guider dans votre choix d'un framework PHP."

Source : Nexen

L'article de TheCredence : PHP frameworks - Which one is Most Suitable for you?

Août 2007 – Nexen.net: Booster votre SQL avec les boucles du Proxy

accelerer
Parfois, il manque vraiment une structure de boucle en SQL. On aimerait bien pouvoir exécuter plusieurs fois la même requêtes, avec des changements incrémentaux sans avoir à passer par un éditeur ou un script PHP. C'est maintenant possible avec le proxy MySQL : le proxy dispose d'un langage de programmation, qui permet d'exécuter des scripts. Guiseppe Maxia a trouvé comment utiliser ces boucles pour des boucles numériques et même des boucles associatives.

Août 2007 – Nexen.net: Protéger son code source PHP avec mod_security

code.php
Il arrive de découvrir parfois qu'un serveur Web a une fuite de code PHP : au lieu d'afficher de résultat du script PHP, il affiche carremment le code source, avec tous les problèmes de sécurité qui en découlent. Les sources de cette erreurs sont généralement un problème de configuration, où des fichiers n'ont pas d'extension adaptée : par exemple, un fichier .php.bak, comme en produisent certains éditeurs, ou bien les fichiers .inc, sont affichés par défaut comme des pages HTML par Apache. Une solution pour y remédier est d'utiliser mod_security, et d'interdire toutes les pages qui contiennent des balises PHP

Août 2007 – Nexen.net: Pense-bête MySQL

liste
Un pense-bête des commandes de MySQL, avec les mots-clés, les listes de paramètres et même quelques astuces de construction SQL.

Août 2007 – Nexen.net: La vie va changer avec MySQL 5.1

mysql.51
MySQL 5.1 devrait bientôt remplacer la version 5.0 comme version stable. Qu'est-ce que cette nouvelle version va apporter aux utilisateurs? Guiseppe Maxia nous rappelle les points forts : Partitions Réplication à la ligne Tables de log à la demande Programmeur d'événements Fonctions XML

Août 2007 – Nexen.net: Accéder à une page Web avec PHP

Si la réponse la plus simple à la question ci-dessus est bien 'file_get_contents', il y a en fait beaucoup d'options comme les contextes (pour configurer la requête HTTP, incluant les méthodes, les cookies et les User-Agent), les flux (pour configurer les types d'accès), la gestion des erreurs et la reception du livrable. Un excellent article à garder sous le coude pour ne plus rien oublier.

Août 2007 – Nexen.net: GeekChat : chat PHP, MySQL et Ajax

"GeekChat Basic est un chat en ligne, basé sur PHP, MySQL pour donner un système puissant de communication, qui peut être intégré à n'importe quel site Web." GeekChat intègre ainsi jQuery pour la partie Ajax. Il dispose d'un système anti-flood, de canaux séparés, de canaux privés et d'un historique. Il est multi-plate-forme, et personnalisable.

Août 2007 – Nexen.net: Génération de XML depuis PHP et MySQL

unicode
Rolan Bouman s'intéresse à la publication de données textuelles depuis MySQL vers des documents externes, via PHP. Au départ, il y a une colonne de type MEDIUMTEXT en UTF8. Au final, il y a une multitude de documents en différents formats, RTF, HTML, text. Rolan a donc mis en place un script XSLT, qui assure la conversion de manière non-intrusive. Il lui reste donc à régler les problèmes de jeux de caractères, et c'est tout l'intérêt de cet article.

Août 2007 – Digital Fashion: findBy{$Field} with Zend_Db_Table

A quick post to show how one can easily implement a findByField wrapper in Zend_Db_Table:

/**
         * Implements a simple findByField wrapper
         */


        public function __call($method, $args) {
                if (preg_match('/^findBy([a-zA-Z0-9]+)$/', $method, $parts)) {
                        $field = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $parts[1]));
                        if (!in_array($field, $this->_cols)) {
                                throw new Zend_Db_Table_Exception(sprintf('\'%s\' field not in row', $field));
                        } else {
                                $db = $this->getAdapter();
                                $where = $db->quoteInto($db->quoteIdentifier($field).' = ?', $args[0]);
                                return $this->fetchAll($where);
                        }
                }
        }

What it does is basically trapping any non-existant method call and check if the corresponding field exists, after converting CamelCasing to underscore_notation (eg: FooBar becomes foo_bar).

Août 2007 – PHP Index: Galaxie PHP

Galaxie PHP est un site qui tente de regrouper en un seul flux RSS toute l'actualité francophone sur PHP, depuis les sites d'informations les plus connues aux blogs d'utilisateurs méconnues.

Si votre site parle de PHP n'hésitez pas à le proposer.

http://www.galaxie-php.info

Proposé par Julien Duponchelle

Août 2007 – Noplay: Lancement de Galaxie PHP

Tout comme planet-libre, Galaxie PHP est un planète pour PHP, c'est-à-dire un site qui agrège en un point toute l'actualité francophone sur PHP.

J'ai décidé de lancer ce site suite à l'ajout de mon blog à planet-libre (au passage bravo à tous les bloggeurs pour la qualités des articles publiés) et à ma lecture de nombreux planet anglophone (Planet PHP, Planet KDE...). J'ai donc eu envie de monter un planet francophone pour PHP et ainsi fournir une dose de drogue en plus pour les accros comme moi aux flux RSS.

N'hésitez pas me à proposer votre site si celui-ci parle de PHP.

http://www.galaxie-php.info

Août 2007 – Noplay: Intégration de PHPUnit dans Zend Studio

Sebastian Bergmann l'auteur de PHPUnit a posté des screenshoots de l'intégration de la suite de test unitaire PHPUnit dans la prochaine version de Zend Studio qui sera batis au dessus d'Eclipse.

http://www.phpunit.de/wiki/ZendStudio

Août 2007 – Nexen.net: Les objets prennent moins de place que les tableaux

observatoire
PHP 5 supporte beaucoup mieux les objets qu'auparavant, et surtout, ce sont maintenant des types de données spécifique, et non plus une version améliorée des tableaux. La preuve? Evert Pot mesure 24 fois moins de consommation de mémoire pour un objet que pour un tableau. Voila qui va faire réfléchir lors de la prochaine conception PHP....

Août 2007 – Nexen.net: JS Fuzzer et JS Lan Scan

scanner
Gareth Heyes propose deux outils en Open Source, après avoir blogué et testé en public leur utilité. Le premier est un Fuzzer : il s'agit d'un outil qui torture des balises HTML, pour les envoyer à un formulaire et tenter de passer outre les filtres qui ont été mis en place pour protéger le code HTML. A terme, le but est d'obtenir des vecteurs de XSS, avec une démarche totalement aléatoire, contrairement aux approches manuelles humaines, intuitive mais biaisée. Le rendement de ce type de recherche est faible, mais totalement automatisé, et sans idée préconçue sur les filtres de défenses. Le second est un script d'analyse d'un réseau LAN, à l'aid