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]
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'articleLe 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:
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 .
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
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 :
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.
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 :
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.
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
"Les statistiques de diffusion PHP dans le monde pour juillet 2007 sont arrivées.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."
- 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
Source : Nexen
"Les statistiques de diffusion PHP dans le monde pour juillet 2007 sont arrivées.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."
- 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
Source : Nexen
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/
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
"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
"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
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
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.
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).
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
Lorsque vous voulez insérer du code php dans une page n'utilisez pas les short tags :
mais
. Cela pourrait créer des conflits avec d'autres langages (comme le XML) et l'option est désactivée par défaut.
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
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.
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.
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.
Ne faites jamais :
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 :
Évidemment vous pouvez faire plus propre.
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 :
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.
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é.
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 toujours le retour de toutes les fonctions systèmes, notament fopen, obstart...
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...
Je tiens à remercier Darzee, Snowcat et Stem pour leurs remarques sur cet article.
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.
Traduction en cours : php_codesniffer
Si ca vous intéresse, n'hésitez pas à me signaler les éventuelles probables erreurs.
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:
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
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"
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.
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.
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.
Ainsi on peut choisir quels sont les types de variable qu’on souhaite récupérer…
"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?
"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?
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).
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
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.
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.