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

Octobre 2007 – PHP Index: SquirrelMail 1.4.11

La nouvelle version de ce webmail écrit en PHP est disponible depuis samedi.

Cette version vient corriger quelques bugs, et améliore la stabilité de l'application. Cette release vient notamment améliorer le traitement des emails mal-formés, et la communication avec certains serveurs de mail qui posaient problème jusqu'à maintenant.

Téléchargement
Site officiel

Octobre 2007 – PHP Index: IMP H3 4.1.5

Le webmail Internet Messaging Program est disponible en version stable 4.1.5.

Cette nouvelle release, en plus de corriger quelques bugs, vient avec de nouvelles traductions pour certaines langues comme le chinois, le tchèque, ou le polonais.

Rappelons que ce webmail écrit en PHP est scindé en deux branches: la branche 4.1.x du projet IMP s'appuie sur la version 3 du framework Horde (d'où le nom IMP H3), tandis que la branche 3.8.x fonctionne à l'aide de Horde en version 2.

Téléchargement
Site officiel

Octobre 2007 – PHP Index: MySQL 5.1.22-rc

La version 5.1.22-rc de MySQL est disponible pour le téléchargement.

Parmi les changements disponibles sur cette version, une fonctionnalité a été modifiée :

  • Une nouvelle variable de système innodb_autoinc_lock_mode a été ajoutée pour configurer le comportement d'InnoDB pour la production des valeurs en auto-incrementées. Le comportement par défaut est légèrement modifié, ce qui peut entraîner une incompatibilité mineure pour les insertions de plusieurs rangées dont seulement certaines ont une valeurs explicite pour la colonne auto-incrémentée. Pour plus d'informations, consulter l'article How AUTO_INCREMENT Handling Works in InnoDB.

Parmi les bugs corrigés, quelques exemples :

  • Bug#30134 : Sauvegarde des colonnes TIMESTAMP créées avec ndb_restoire
  • Bug#31001 : Correction des tris sur les clé primaires sur les tables INNODB, quand la clause WHERE est présente sur un seul champ.
  • Bug#30201 : L'utilisation de KILL QUERY ou de KILL CONNECTION pour terminer un SELECT cause un crash du serveur si le cache est activé.
  • ...

Octobre 2007 – Digital Fashion: New home for pagination component documentation

For those caring, I just posted some quick documentation for the pagination component at my assembla space. More docs will follow (including extensive phpdoc docblocks I hope).

Octobre 2007 – Digital Fashion: New home for pagination component documentation

For those caring, I just posted some quick documentation for the pagination component at my assembla space. More docs will follow (including extensive phpdoc docblocks I hope).

Octobre 2007 – PHP Index: Standard PHP Library

Un article vient de paraître sur le site de Zend concernant Standard PHP Library (SPL).

Cette librairie d'interfaces et de classes PHP standard, permet aux développeurs de profiter pleinement de la programmation orientée objet avec PHP5. Quelques explications sont données sur le fonctionnement de cette librairie ainsi que des exemples d'applications.

SPL, directement intégré avec php5, peut être utile pour le développement d'application orientée objet, car elle propose notament des classes pour la gestion de fichiers, la gestion de tableaux, la connexion aux bases de données, simplexml, etc.

L'article
Documentation SPL

Octobre 2007 – PHP Index: FastCGI pour ISS 5.1/6.0

Depuis début 2006, Microsot et Zend travaillent ensemble sur un projet visant a augmenter la fiabilité de PHP sur Windows Server 2003 et 2008.

Une partie de cette collaboration vise à produire un nouveau composant pour IIS 6 et IIS 7 nommé FastCGI permmettant d'utiliser, de manière stable, des applications PHP avec IIS.

Une première version beta de FastCGI pour ISS 5.1/6.0 est disponible gratuitement.

Télécharger FastCGI pour ISS 5.1/6.0
Site officiel

Octobre 2007 – z-f.fr: 10000 visites en septembre

Forum: Brèves
Auteur: philippe
Écrit le: Mon, 01 Oct 2007 10:00:01 +0200
Dernier message: Mon, 01 Oct 2007 10:00:01 +0200

Octobre 2007 – Digital Fashion: PDO not throwing an exception when it should

Today I ran into an issue that I already ran into a few weeks ago when I did not have time to dig up, but today I had this time (this plus it's a really annoying issue as you'll see). The main symptom is that PDO does not throws exceptions when you'd expect it to. It's very annoying. The reason, in my case, seems to be that I am querying an old mysql (3.23.x in my case but any 4.x will do according to this bug report). I was not able to find any info from google, so I'm posting this here so that people know :-)

Octobre 2007 – Digital Fashion: PDO not throwing an exception when it should

Today I ran into an issue that I already ran into a few weeks ago when I did not have time to dig up, but today I had this time (this plus it's a really annoying issue as you'll see). The main symptom is that PDO does not throws exceptions when you'd expect it to. It's very annoying. The reason, in my case, seems to be that I am querying an old mysql (3.23.x in my case but any 4.x will do according to this bug report). I was not able to find any info from google, so I'm posting this here so that people know :-)

Octobre 2007 – PHPortail: MySQL : 5.1.22-RC (01/10/07)

MySQL 5.1.22, la première version candidate à la publication est maintenant disponible. Son niveau de stabilité approche les standards de qualité nécessaires pour une publication officielle, et...

Octobre 2007 – PHPortail: Sécurité: injections SQL et mysqli_escape_string (01/10/07)

Chris Shuflett nous signale deux articles qui traitent des problèmes de sécurité qui dépassent l'utilisation de mysql_escape_string. Bien sûr, nous en parlons dans le livre 'Sécurité PHP 5 et...

Octobre 2007 – PHPortail: CrawlTrack 2.3.0 (01/10/07)

CrawlTrack vous dit tout sur l'activité des robots sur votre site: Il permet:
* de détecter et bloquer de nombreuses tentatives de piratage
* de suivre en temps réel l'activité des robots sur...

Octobre 2007 – tigrou/pwet.fr: Video FLV Datatype extension

Yesterday, I released the first version of eZVideoFLV , a new extension providing a datatype to store, handle and convert to FLV video files. It's based on the default ezmedia datatype . It mainly adds three features :

  • generate an image preview for each video file using ffmpeg-php and GD
  • detect and store video size width ffmpeg-php too
  • convert video file to FLV on upload or with a cronjob script in order to be readable with a flash FLV player (like on Youtube or Dailymotion) using ffmpeg program

The extension is bundled with FLV Player which is released under the MPL 1.1 license. The rest of the extension is released under the GNU GPL licence 2. All information (requirements, installation, screenshots ,...) can be found in the project page on projects.ez.no and I put an example on this site .

Octobre 2007 – Prendre un Café: Délicieuse Symphonie

Alors ça c'est du lourd : Symfony propulse del.icio.us preview.

Il parait que Symfony rame, sauf chez Yahoo!. Poltergheist ? ;)

Octobre 2007 – Prendre un Café: Délicieuse Symphonie

Alors ça c'est du lourd : Symfony propulse del.icio.us preview.

Il parait que Symfony rame, sauf chez Yahoo!. Poltergheist ? ;)

Octobre 2007 – PHPortail: SquirrelMail 1.4.11 (02/10/07)

SquirrelMail est un lecteur de courriel web, complètement écrit en PHP. Sa dernière mouture vient de sortir.

Cette version corrige quelques bogues, et améliore la stabilité de...

Octobre 2007 – PHPortail: YAML directement en PHP avec syck (02/10/07)

« YAML est aussi connu sous le nom de YAML Ain't Markup Language (YAML n'est pas un autre langage à balise) ou Yet Another Markup Language (encore un autre langage à balise). C'est un format de...

Octobre 2007 – PHPortail: SpongeStats 3.0 (02/10/07)

"Le logiciel open source d’analyse des statistiques de fréquentation pour les sites Internet et les blogs est disponible en version 3.0. Cette nouvelle mouture se veut résolument orientée vers...

Octobre 2007 – PHPortail: PHP 5.3 bientot disponible (02/10/07)

Depuit un certain temps, les gens voyaient la venu de PHP 6 comme un trop gros changement. Pour aider une évolution en douceur vers ce dernier, une nouvelle version de PHP verra le jour : PHP 5.3...

Octobre 2007 – Prendre un Café: Dégradabilité javascript et Ajax dans Symfony avec jQuery

Pour un projet, je suis en train d'utiliser la librairie javascript jQuery dans Symfony, en lieu et place du couple prototype et scripaculous dont je vous avait déjà parlé.

L'idée est ici de ne pas avoir à utiliser les helpers fournis par Symfony (qui mettent en oeuvre exclusivement Scriptaculous) et ainsi d'éviter d'utiliser les deux librairies simultanément sur le projet, mais aussi de décoreller le code javascript des templates et de favoriser une meilleure dégradabilité de ce dernier.

Par exemple, au lieu d'utiliser la fonction link_to_remote() dans notre template, on peut tout à fait imaginer d'employer un bon vieux link_to() des familles et de lui appliquer une classe css qu'on va pouvoir cibler depuis jQuery afin d'effectuer un appel AJAX pointant vers l'url présente dans l'attribut href du lien. Avec un exemple, c'est un peu plus clair :

<?php echo link_to('Mon lien', '@maroute?monparam=mavaleur', array('class' => 'ajax_link')) ?>

Dans un fichier javascript (jQuery doit bien entendu être chargé) :

$(document).ready(function() {
  $('a.ajax_link').click(function()
    {
      $.ajax(
        {
          type: 'post',
          url: $(this).attr('href'),
          success: function(msg)
          {
            alert("Résultat: " + msg);
          }
        });
      return false;
    }
  );
});

Avantage supplémentaire, vous continuez à bénéficier du système de routing Symfony (pas d'urls en dur dans les fichiers javascripts externalisés.)

Là où Symfony va également nous aider, c'est au travers de sa gestion native de la décoration d'une vue en fonction du type d'appel HTTP : le framework va detecter si l'action a été appelée ou non depuis une requête XmlHttpRequest et, si c'est le cas, décorer la vue avec le layout global de l'application et donc présenter à vos utilisateur le résultat escompté, qu'ils aient activé javascript ou non pour surfer sur votre site.

Si vous désirez mettre à jour un élément de l'arbre DOM avec le contenu reçu d'une requête Ajax, voici une autre petite astuce ; on va utiliser une ancre dans l'url et s'en servir comme argument décrivant l'id DOM qu'on veut mettre à jour :

<?php echo link_to('Mon lien', '@maroute?monparam=mavaleur#mon_div', array('class' => 'ajax_link')) ?>
<div id="mon_div" style="display:none"></div>

Et en javascript :

$(document).ready(function() {
  $('a.ajax_link').click(function()
    {
      var href = $(this).attr('href');
      var target = href.substring(href.lastIndexOf('#'), href.length);
      $.ajax(
        {
          type: 'post',
          url: href,
          success: function(msg)
          {
            if ($(target))
            {
              $(target).html(msg).show('slow');
            }
          }
        }
      );
      return false;
    }
  );
});

Note : on aurait pu aussi détourner l'attribut target à cette fin mais ce dernier n'est pas valide en XHTML strict.

Bien entendu, ceci n'est qu'un microscopique aperçu de l'étendu des possibilités de jQuery et de son intégration possible avec Symfony (ou d'autre frameworks et langages, bien entendu.)

Octobre 2007 – Prendre un Café: Dégradabilité javascript et Ajax dans Symfony avec jQuery

Pour un projet, je suis en train d'utiliser la librairie javascript jQuery dans Symfony, en lieu et place du couple prototype et scripaculous dont je vous avait déjà parlé.

L'idée est ici de ne pas avoir à utiliser les helpers fournis par Symfony (qui mettent en oeuvre exclusivement Scriptaculous) et ainsi d'éviter d'utiliser les deux librairies simultanément sur le projet, mais aussi de décoreller le code javascript des templates et de favoriser une meilleure dégradabilité de ce dernier.

Par exemple, au lieu d'utiliser la fonction link_to_remote() dans notre template, on peut tout à fait imaginer d'employer un bon vieux link_to() des familles et de lui appliquer une classe css qu'on va pouvoir cibler depuis jQuery afin d'effectuer un appel AJAX pointant vers l'url présente dans l'attribut href du lien. Avec un exemple, c'est un peu plus clair :

<?php echo link_to('Mon lien', '@maroute?monparam=mavaleur', array('class' => 'ajax_link')) ?>

Dans un fichier javascript (jQuery doit bien entendu être chargé) :

$(document).ready(function() {
  $('a.ajax_link').click(function()
    {
      $.ajax(
        {
          type: 'post',
          url: $(this).attr('href'),
          success: function(msg)
          {
            alert("Résultat: " + msg);
          }
        });
      return false;
    }
  );
});

Avantage supplémentaire, vous continuez à bénéficier du système de routing Symfony (pas d'urls en dur dans les fichiers javascripts externalisés.)

Là où Symfony va également nous aider, c'est au travers de sa gestion native de la décoration d'une vue en fonction du type d'appel HTTP : le framework va detecter si l'action a été appelée ou non depuis une requête XmlHttpRequest et, si c'est le cas, décorer la vue avec le layout global de l'application et donc présenter à vos utilisateur le résultat escompté, qu'ils aient activé javascript ou non pour surfer sur votre site.

Si vous désirez mettre à jour un élément de l'arbre DOM avec le contenu reçu d'une requête Ajax, voici une autre petite astuce ; on va utiliser une ancre dans l'url et s'en servir comme argument décrivant l'id DOM qu'on veut mettre à jour :

<?php echo link_to('Mon lien', '@maroute?monparam=mavaleur#mon_div', array('class' => 'ajax_link')) ?>
<div id="mon_div" style="display:none"></div>

Et en javascript :

$(document).ready(function() {
  $('a.ajax_link').click(function()
    {
      var href = $(this).attr('href');
      var target = href.substring(href.lastIndexOf('#'), href.length);
      $.ajax(
        {
          type: 'post',
          url: href,
          success: function(msg)
          {
            if ($(target))
            {
              $(target).html(msg).show('slow');
            }
          }
        }
      );
      return false;
    }
  );
});

Note : on aurait pu aussi détourner l'attribut target à cette fin mais ce dernier n'est pas valide en XHTML strict.

Bien entendu, ceci n'est qu'un microscopique aperçu de l'étendu des possibilités de jQuery et de son intégration possible avec Symfony (ou d'autre frameworks et langages, bien entendu.)

Octobre 2007 – Rom's blog: L’UNESCO récompense Claroline

C’est mes potes! Des fidèles de chez fidèles du forum PHP et de l’AFUP. Ils sont même venus suivre une formation chez Anaska.

Maintenant qu’il sont riches, j’espère qu’ils vont nous payer une bonne bouffe au forum de cette année ;-)

L’annonce officielle :

Le projet Claroline (plate-forme libre d’apprentissage à distance) va être récompensé par le prix UNESCO - Roi Hamad Bin Isa Al-Khalifa 2007 pour l’utilisation des technologies de l’information et de la communication dans l’éducation (TICE). Il est lauréat avec le projet américain Curriki.

Le Directeur général de l’UNESCO remettra leurs prix aux deux lauréats – un diplôme et un chèque de 25 000 USD pour chacun d’eux – au cours d’une cérémonie qui aura lieu au siège de l’organisation, le 19 décembre prochain. Les lauréats ont été choisis parmi 68 projets menés dans 51 pays et une organisation non gouvernementale internationale active dans le domaine de l’accès libre à l’éducation.

Le Prix est placé sous le haut patronage de Sa majesté le Roi Hamad Bin Isa Al-Khalifa du royaume de Bahreïn.

Octobre 2007 – PHP Index: IBM: Unicode for the working PHP programmer

La plate-forme developperWorks d'IBM nous propose un article sur l'utilisation de l'unicode en PHP 5.

L'encodage du texte est une problèmatique récurrente dans le développement web, que ce soit dans le seul but de sauvegarder l'intégrité des caractères accentués, ou dans le cadre de l'internationalisation complête d'une application.
Le standard unicode a été créé pour répondre à cette problèmatique en permettant de stocker tout type de caractères, qu'ils soient cyrilliques ou chinois. A l'heure actuelle PHP ne gère pas nativement l'unicode, mais offre néanmoins de nombreuses fonctions permettant de l'utiliser dans ses scripts.

En attendant la version 6 de PHP, dont la prise en charge en natif de l'unicode sera un des principaux apports, l'article d'IBM nous explique les possibilités actuelles de PHP 5 et MySQL concernant l'utilisation du language unicode et de l'encodage UTF-8.

IBM: Unicode for the working PHP programmer

Octobre 2007 – Arnaud Limbourg: Les inscriptions pour le forum sont ouvertes !

Vous pouvez vous inscrire pour le Forum PHP ayant lieu les 21 et 22 novembre 2007.

Réservez vos places dès maintenant !

http://www.afup.org/pages/forumphp2007/inscription.php

Octobre 2007 – Arnaud Limbourg: Les inscriptions pour le forum sont ouvertes !

Vous pouvez vous inscrire pour le Forum PHP ayant lieu les 21 et 22 novembre 2007.

Réservez vos places dès maintenant !

http://www.afup.org/pages/forumphp2007/inscription.php

Octobre 2007 – Dur Comme Faire: Ouverture des inscriptions au Forum PHP 2007

Les inscriptions au Forum PHP 2007 sont ouvertes depuis ce matin. Pour rappel, au programme de cette édition 2007, on trouve notamment : Comment faire vivre son site Web2.0 avec PHP5 ? Les clients riches avec PHP : Flex pour l'exemple Optimisation, méthodes, sécurité :...

Octobre 2007 – PHP Index: Asbru Adds Advanced Workflow Engine to CMS

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

In this latest release an advanced workflow engine to manage the publication of website content has been added. The implementation is designed to support almost any organization's existing website publishing business processes. The workflow engine can handle multiple workflow definitions at the same time. Additionally any number of workflow steps is possible so there is no limit to the number of organizational departments that can be involved in publishing of website content.

Efficient and Controlled Website Publishing
The new workflow engine is fully integrated into the CMS making the publishing of website content very efficient. Users have their own personal workspace, which gives them a quick overview of content allocated to them and waiting for their review. As content moves through the workflow users are alerted via email to new content allocated for their review. It is also possible to configure the system so that any user can view where content is in the workflow process providing control of the publishing process and transparency across the whole organization.

Flexible Workflow Definitions
Several workflow definitions can be created and enforced for different sections of a website and for various types of content including pages, products, image media, audio files, electronic documents and other files. Additionally the actions and the organizational departments and users permitted for each workflow step are fully configurable. Some steps may for example involve editing the content while other workflow steps only enable users to view the content and approve or reject. Workflow definitions are easily created and diagrams provide a quick overview of all the workflow actions in the system.

For a free online trial of the new version of the Asbru Web Content Management system: http://wcm.asbrusoft.com.

About Asbru Web Content Management
The Asbru Web Content Management system is a full-featured and ready to use out-of-the-box enterprise level solution. It is available for PHP, ASP and JSP/Java and runs on Microsoft Windows, Linux, Unix and Mac OS X. The system enables users to update web content through Internet Explorer, Mozilla/Firefox and Safari web browsers. For more information about Asbru Web Content Management: http://wcm.asbrusoft.com.

Proposé par David Fisher

Octobre 2007 – tigrou/pwet.fr: eZ Publish 4 Alpha 1 et beaucoup d'autres choses

eZ Publish 4 Alpha 1

eZ Publish 4 arrive enfin, une première version alpha est sortie jeudi dernier basée sur le portage communautaire débuté par Kristof Coomans et Paul Borgermans . En terme fonctionnel ce ne sera probablement pas une révolution mais le principal atout de cette version est évidemment le support tant attendu de PHP5 (les utilisateurs de distribution Linux ne supportant que PHP5 vont apprécier). En plus de cela, je retiens deux points qui apportent des perspectives intéressantes :

  1. l'intégration progressive des eZ Components
  2. l'utilisation du mécanisme d'autoload de PHP5

L'intégration des eZ Components permettra dans un premier temps d'utiliser ces composants dans les extensions en attendant qu'ils soient réellement intégrer dans eZ Publish en lui-même. Cela ouvre déjà pas mal de perspectives intéressantes, en tout cas j'ai plein d'idées :-)

Le second point paraît plus anodin mais en fait, en plus de simplifier la vie du développeur, il pourra permettre de modifier facilement une classe du kernel eZ Publish sans vraiment le modifier. Ce n'est bien sûr pas recommandé mais c'est malheureusement parfois nécessaire et là on pourra le faire de manière presque propre.

LLaumgui parle aussi de cette sortie avec un commentaire instructif de Paul Borgermans .

Et le reste ?

À côté de cet évènement eZ Publish 3.10 est sorti avec des nouveautés fonctionnelles intéressantes (qui sont aussi de fait dans eZ Publish 4), en particulier :

J'ai testé les nouvelles fonctionnalités autour des URL en développant eZVideoFLV avec la 3.10beta ; habitué des _ et de l'ASCII c'est assez déroutant mais c'est enfin configurable et extensible, ça ne peut être que mieux. Je n'ai pas encore testé le datatype Multi-options2 mais ça ne saurait tarder.

Les versions 3.9.4 et 3.8.10 sont également sorties corrigeant deux failles de sécurité. Bref quoi qu'il arrive, des mises à jours sont à prévoir. Pour moi ce sera probablement en 3.10.x voire en 4.0 si une beta pointe le bout de son nez dans pas trop longtemps.

Enfin Clever Age publie sur son blog un article plutôt pertinent sur le support un peu délaissé des SGBD autres que MySQL par eZ Publish (qu'ils ne savent par contre pas orthographier correctement :p).

Octobre 2007 – Narno.com: eZ Publish 4.0 apporte le support PHP 5

La prochaine version de eZ Publish, 4.0, vient d'être publiée en alpha, avec le support attendu de PHP 5. Il est désormais possible de faire tourner le célèbre CMS sur une plate-forme PHP 5.
eZ Publish 4.0 pave la voie pour l'intégration des eZ components, améliore les performances, le support des clusters, et la recherche.

Nexen

En voilà une nouvelle qu'elle est bonne ! En effet, parmi les "gros" framework du marcher, eZ Publish restait l'un des derniers à ne pas avoir encore annoncé sa migration vers PHP5. Malgré tout, il ne s'agit pas d'une véritable migration dans le sens où l'architecture du moteur reste en PHP4 (pour le moment ?), mais sera capable de tourner sur un serveur PHP5.

Celà reste un bon point pour les agences qui pourront faire leurs développements spécifique en PHP5.

D'autre part, l'amélioration des performances des "components" ne sera pas négligeable non plus.

en lire plus

Octobre 2007 – Narno.com: eZ Publish 4.0 apporte le support PHP 5

La prochaine version de eZ Publish, 4.0, vient d'être publiée en alpha, avec le support attendu de PHP 5. Il est désormais possible de faire tourner le célèbre CMS sur une plate-forme PHP 5.
eZ Publish 4.0 pave la voie pour l'intégration des eZ components, améliore les performances, le support des clusters, et la recherche.

Nexen

En voilà une nouvelle qu'elle est bonne ! En effet, parmi les "gros" framework du marcher, eZ Publish restait l'un des derniers à ne pas avoir encore annoncé sa migration vers PHP5. Malgré tout, il ne s'agit pas d'une véritable migration dans le sens où l'architecture du moteur reste en PHP4 (pour le moment ?), mais sera capable de tourner sur un serveur PHP5.

Celà reste un bon point pour les agences qui pourront faire leurs développements spécifique en PHP5.

D'autre part, l'amélioration des performances des "components" ne sera pas négligeable non plus.

Octobre 2007 – PHP Index: MemHT Portal 3.2, quand simplicité rime avec CMS

MemHT est un portail de génération de site internet intéressant à plus d'un titre.
La simplicité en est sa caractéristique principale où il semble enfin aisé de gérer son propre site internet sans aucune connaissance en langage informatique.

MemHT est un portail Web ( CMS ou SGC ) écrit en PHP/MySQL par Miltenovik Manojlo (Italie) et déjà disponible en 13 langues.
Sa venue en France est très récente, mais à pour but d'offrir à la communauté Francophone une version totalement française, ainsi qu'un support s'y référant.
MemHT a pour arme principale, une simplicité extrême d'utilisation et d'installation tout en conservant une gestion des droits éprouvée et une touche d'Ajax là où ça va bien, pas d'abus de cette technologie trop souvant gourmande, mais des fonctions clefs rendant son utilisation bien agréable (bien évidemment nous pouvons retrouver une intégration du framework scriptaculous, référence en la matière) .

MemHT est livré actuellement en version 3.2, apportant 'comme tout CMS' son lot de nouveautés et de correctifs.
MemHT c'est :
- un forum ultra simple et performant
- une galerie en Ajax du plus bel effet
- une FAQ
- un guide
- une messagerie privé
- un gestionnaire d'articles
- des RSS
- un plan du site
- une fiche contact
- l'url rewriting nativement intégré
- une administration extrêmement simple
- etc etc

Le meilleur moyen de vous faire un avis est tout simplement de tester MemHT pour savoir si il peut répondre à vos attente.

Vous retrouverez les sources françaises sur:
- www.memht-france.com
Le site officiel de développement:
- www.memht.com

Souhaitant que MemHT vous apporte autant de satisfaction qu'à nous même.
Profitez pleinement de la simplicité de MemHT pour votre projet internet.

Proposé par Cyril Levert

Octobre 2007 – tigrou/pwet.fr: Upgrading a "large" site from eZ Publish 3.9.2 to eZ Publish 3.10

Warning:this article explains some hacks I had to do to upgrade quickly to eZ Publish 3.10. These modifications can be dangerous for your data, use them at your own risk and don't forget to make backups !

Waiting for a more stable version of eZ Publish 4 , I've upgraded my site from eZ Publish 3.9.2 to eZ Publish 3.10.0. My last upgrade was quite long , but this one could have taken ages ! As I mentioned in the developper forum , the updateniceurls.php script started with this message :

> tigrou@dedipwet[88.191.30.29]:~/web/pwet.fr/www310$ php4 bin/php/updateniceurls.php -s plain_site_admin
Using siteaccess plain_site_admin for nice url update
Importing old url aliases
Importing 62638 standard urls
........................................................ 0.09% 45h 46m 8s
........................................................ 0.18% 86h 55m 44s
........................................................ 0.27% 106h 58m 2s
........................................................ 0.36% 155h 18m 55s

WOW 155 hours, and just for the first step ! In fact, I don't want to change my URIs (Cool URIs don't change !) so I put these lines in site.ini.append.php :

[URLTranslator]
TransformationGroup=urlalias_compat 

But even with these settings, the script tries to regenerate all URL aliases. After some searches, I found that eZURLAliasML::storePath() takes most of the time by calling several times eZURLAliasML::convertToAlias() on strings that are in my case already URL aliases ! This behaviour can be avoided by setting the $cleanupElements parameters to false (its default value is true) in the code of updateniceurls.php. eZURLAliasML::storePath() also calls eZURLAliasML::strtolower() several times. This method uses eZCharTransform to do an advanced strtolower but in my case with my existing ASCII URL aliases, there's no need of it. I has just replaced this code with a simple PHP strtolower() ( don't forget to remove this hack after upgrade !).

With those hacks, eZURLAliasML::storePath() takes about 0.02 second per URI where the original code took between 0.6 and 10 seconds !

By following the upgrade documentation , the rest of the upgrade was, as always, quite easy.

Octobre 2007 – Rom's blog: Ouverture des inscriptions pour le Forum PHP 2007

Extrait du communiqué officiel (un peu personnalisé)

La grand messe annuelle des utilisateurs de PHP réunira de nombreuses personnalités du monde PHP : le père du PHP Rasmus Lerdorf, Andrei Zmievski, développeur du langage PHP et expert unicode, Derick Rethans, créateur de Xdebug et architecte à eZ Systems, ou encore … moi ;-)

Organisé à Paris, les 21 et 22 novembre prochains par l’Association Française des Utilisateurs de PHP (www.afup.org), le Forum PHP 2007 propose 2 journées de conférences, orientées, fonctionnel et technique. Une occasion unique d’échanges avec l’ensemble de la communauté PHP française, les meilleurs spécialistes, et les entreprises utilisatrices.

Informations et inscriptions : http://www.afup.org/pages/forumphp2007/

Octobre 2007 – Hello Design: Forum PHP 2007

Le forum PHP 2007 se tiendra les 21 et 22 novembre à Paris. Des intervenants de renom : Rasmus Lerdorf (créateur du PHP) et Andrei Zmievski (responsable du développement de PHP 6) y seront présents.

Ce forum s'adresse à tous ceux qui développent des applications Web. La première journée est axée sur le domaine fonctionnel, la deuxième est orientée technique.

Le forum PHP organisé par l'Association Française des Utilisateurs de PHP (AFUP) est une occasion unique de rencontrer la communauté et les professionnels de PHP. Plus d'informations sur http://www.afup.org/forumphp/

 

Octobre 2007 – PHP Index: e107 v0.7.9

Nouvelle version du CMS e107, encore en final cette année de l'Open Source CMS Award de packtpub.com...

Cette nouvelle version à télécharger sur http://e107.org vient corriger des bugs essentiellement.

La prochaine version majeure est déjà en cours de réalisation et apportera beaucoup plus de ouvelles fonctionnalités que celle-ci.
Néanmoins il est fortement recommendé de mettre son système à jour.

Plus d'infos en français, sur le site communautaire:
http://etalkers.tuxfamily.org

Proposé par Lolo Irie

Octobre 2007 – PHP Index: mod Rewrite phpBB SEO Intermédiaire pour BBtonuke

Sortie du mod Phpbb-Seo mod Rewrite phpBB SEO Intermédiaire pour BBtonuke

Ce mod réécrit les URLS des forums BBtonuke (phpBB intégré dans le CMS PhpNuke) en injectant le titre des catégories et forums dans leurs URLS. Les URLS des sujets utiliseront une réécriture statique : topicxx.html

Lien pour le téléchargement du module

Lien vers la démo du module : ici

Lien vers le forum ou est assuré le support : ici

Il est vivement conseillé de l'installé en complément du mod
Zero duplicate pour une optimisation du référencement de votre forum sans Duplicate Content ;)"

Proposé par Vespa

Octobre 2007 – PHPortail: 7ème édition du Forum PHP de Paris les 21 et 22 novembre (09/10/07)

Organisé à Paris les 21 et 22 novembre prochain par l’Association Française des Utilisateurs de PHP, le Forum PHP 2007 propose 2 journées de conférences, orientées fonctionnels et techniques....

Octobre 2007 – PHPortail: Les statistiques de diffusion de PHP pour septembre 2007 (09/10/07)

Comme chaque mois, Nexen.net produit les statistiques de diffusion PHP dans le monde. Celles pour septembre 2007 sont maintenant arrivées. 1 % de mieux pour PHP 5, qui prend 23 % du "marché"....

Octobre 2007 – PHPortail: Savez-vous comparer comme PHP? (09/10/07)

Nexen.net vient de sortir un test sur les comparaisons en PHP. Ce n’est pas aussi facile qu'il ne parait!

« Tout le monde sait comparer en PHP : le typage faible couplé à une adaptation...

Octobre 2007 – PHPortail: Adoption de Symfony par Del.icio.us (09/10/07)

Encore une bonne nouvelle pour le cadre d'application symfony. Après Yahoo! Bookmarks, c'est le tour de del.icio.us de passer à symfony.

Bravo à l'équipe de symfony, sans oublier le grand...

Octobre 2007 – jp.fox: Mise à jour de Zend Core sous Linux

Zend Logo (Propriété de Zend) Suite à la sortie de Zend Core 2.5, il est possible de mettre à jour facilement un serveur Zend Core 2.0 sous Linux à l'aide de la commande suivante (sous login root ou avec sudo) afin de bénéficier, au moins, de PHP 5.2.4 :

# /usr/local/Zend/Core/setup/update -g -a

Si, comme moi, vous avez ajouté quelques extensions à Zend Core, comme PDO_SQLITE, une désinstallation/réinstallation peut être nécessaire :

# /usr/local/Zend/Core/bin/pecl uninstall PDO_SQLITE
# /usr/local/Zend/Core/bin/pecl uninstall PDO
# /usr/local/Zend/Core/bin/pecl install PDO
# /usr/local/Zend/Core/bin/pecl install PDO_SQLITE

Ensuite un petit redémarrage d'Apache est nécessaire :

# /usr/local/Zend/apache2/bin/apachectl restart

Et vous voilà avec un serveur sous PHP 5.2.4 :-)

Remarque : il est aussi possible de passer par l'interface web si vous y avez accès : http://votreserveur/ZendCore/ > Control Center > Updates

Octobre 2007 – PHP Index: IBM : Débuter avec les frameworks PHP

Dans un article paru sur le site IBM, Duane O'Brien propose d'examiner les similitudes et les différences de trois frameworks PHP : Zend, symfony, CakePHP.

Cet article est le premier d'une série de tutoriaux à destination des développeurs PHP souhaitant débuter avec un framework, mais n'ayant pas le temps d'examiner toutes les solutions dans les moindres détails.
L'auteur se concentre sur les trois frameworks PHP parmi les plus répandus, à savoir Zend, symfony, CakePHP. Le but avoué de cette série de tutoriaux est de comprendre pour quelles raisons utiliser un framework, de présenter les trois frameworks choisis et de comprendre comment installer et avoir une bonne mise en main de chacun d'eux.

Le premier tutoriel commence par donner les inévitables bases :

  • Qu'est-ce qu'un framework?
  • Présentation succincte des frameworks PHP, notamment ZEND, symfony et CakePHP.
  • Installation des 3 frameworks.

L'auteur propose ensuite de réaliser une première application test, intitulée "Blahg". Il s'agit de permettre de poster un texte, via une simple zone de texte. Celui-ci sera alors enregistré en base de données et l'application permettra de l'afficher à la demande.
Dans le premier tutoriel, seule l'installation de la base de données de cette application est abordée. Pour le reste, il faudra attendre les prochains tutoriaux

Octobre 2007 – PHP Index: Projet Phalanger : PHP, langage de premier choix sur la plate-forme Microsoft .NET

Une nouvelle version de Phalanger est disponible depuis peu. Ce projet Open Source a pour but d'implémenter le langage PHP sur la plateforme .NET de Microsoft. Elle permet par exemple d'exécuter sans modification des applications PHP existantes comme phpBB, phpMyAdmin, Wordpress et bien d'autres encore.

Pour Christophe Lauer, auteur du projet, Phalanger confère à PHP le statut de "langage .NET", ouvrant la porte à l'intéropérabilité avec l'ensemble de la plate-forme .NET et à l'utilisation - entre autres - de Microsoft Ajax et des contrôles riches de l'ASP.NET Ajax Control Toolkit.

La présentation du projet sur le site MSDN, comporte quelques rappels des concepts de base ASP.NET, puis passe en revue les possibilités offertes par Phalanger, ses points forts et ses limites.

Pour plus d'informations :

Octobre 2007 – PHP Index: IMagick 2.0.0

La version finale d'IMagick 2.0.0 est disponible au téléchargement.

Cette version est, comme son numéro de version ne l'indique pas, la première version stable de ce wrapper depuis sa création en 2002, et après plusieurs années en version beta 0.9.x. Il faut d'ailleurs noter que cette version 2.0.0 n'est pas compatible avec les versions précédentes.

Rappelons qu'IMagick est une extension PHP permettant d'utiliser les API d'ImageMagick pour manipuler des images au travers de classes PHP.
Cette version nécessite au minimum PHP 5.1.3, ImageMagick 6.2.4, et le PEAR Installer 1.4.0.

Site officiel IMagick
Changelog
Documentation
Site officiel ImageMagick

Octobre 2007 – PHP Index: VNUNet : Les logiciels open source inspirent de plus en plus confiance

Le site VNUNet.fr propose un article à propos d'une récente étude sur les logiciels libres.

L'étude en question montre que l'engouement pour les logiciels libres ne faiblit pas, et nous présente quelques chiffres intéressants.
On apprend par exemple que 53% des responsables de sécurité ont tendance à déployer des logiciels libres plutôt que leurs équivalents commerciaux, et que parmis les raisons de la préférence d'une solution open source à une solution commerciale, 80% avancent le coût, 51% l'accès au code source, et 47% le fait que le code soit examiné par la communauté.
A l'inverse, selon l'étude les principaux arguments en faveur des logiciels commerciaux sont la facilité d'adoption et les mises à jour automatiques.

L'article de VNUNet: Les logiciels open source inspirent de plus en plus confiance

Octobre 2007 – PHP Index: Zend, pour un tandem Windows et PHP plus performant

Lors de la ZendCon PHP conference à San Francisco, Zend a annoncé plusieurs projet en concertation avec Microsoft, dans le but d'améliorer la performance des applications PHP fonctionnant sur Windows.

Selon les dires d'Andi Gutsman, co-fondateur de Zend, les nombreuses annonces faites à la Zendcon PHP conférence convergent vers un même but : établir un écosystème autour de PHP et de Zend. Environ 55% des clients de Zend souhaiteraient établir des applications hybrides. Pour répondre à ce besoin, Zend s'intéresse à Eclipse et Andi Gutmans motive le choix de ce framework Open Source par le fait que son utilisation semble atténuer la difficulté pour créer des application multi-langages

Parmi les annonces, on peut noter :

  • Disponibilité d'une version preview de Zend Studio pour Eclipse.
  • Mise à jour de la distribution Zend Core 2.5.
  • Aboutissement des accords entre Zend et Microsoft, notamment par l'amélioration des performances de PHP sur Windows Server 2003, 2008 et pour les version futures.
  • Accords avec Oracle, notamment pour l'intégration et le support des bases de données IBM DB2.

Pour plus d'informations, lire l'article correspondant sur SD Times

Octobre 2007 – Arnaud Limbourg: Pyrus: l'installateur de PEAR réinventé

Joshua Eichorn à récemment posté une liste des nouveautés attendues dans la nouvelle version de l'installateur de PEAR. Afin d'éviter la confusion possible à l'heure actuelle l'installateur va changer de nom et s'appeler Pyrus tandis que le "repository" de paquetages se nommera PEAR2.

Voici la liste des points abordés par Joshua lors de sa "PEAR2 Unconference" en marge de la ZendCon.

  1. Aucune installation n'est nécessaire. Pyrus vient sous la forme .phar qui peut être lancé directement sous PHP.
  2. La plupart des paquetages peuvent être utilisés sans installation et plus tard mis à jour via Pyrus.
  3. Pyrus est fait pour le scénario développement/déploiement. Une commande "deploy" permettra de gérer le déploiement sur un serveur de production
  4. Le code de Pyrus est plus petit et utilise beaucoup moins de mémoire.
  5. Les formats supportés par défaut sont .tar, .tgz, .tbz, .zip, and .phar
  6. La version minimum requise est PHP 5.3+ qui permet d'utiliser les fonctionnalités avançées telles que les itérateur SPL, XMLReader/XMLWriter, l'extension ZIP, l'extension phar (si activée), les exceptions
  7. Le support des applications (en plus des paquetages) via les rôles www and cfg (fichiers de configuration)
  8. Pyrus peut installer la quasi-totalité des paquetages utilisant le format 2.0 de package.xml sans avoir besoin de modifier le code. Vous pouvez également utiliser Pyrus pour gérer vos paquetages PEAR.

Octobre 2007 – Arnaud Limbourg: Pyrus: l'installateur de PEAR réinventé

Joshua Eichorn à récemment posté une liste des nouveautés attendues dans la nouvelle version de l'installateur de PEAR. Afin d'éviter la confusion possible à l'heure actuelle l'installateur va changer de nom et s'appeler Pyrus tandis que le "repository" de paquetages se nommera PEAR2.

Voici la liste des points abordés par Joshua lors de sa "PEAR2 Unconference" en marge de la ZendCon.

  1. Aucune installation n'est nécessaire. Pyrus vient sous la forme .phar qui peut être lancé directement sous PHP.
  2. La plupart des paquetages peuvent être utilisés sans installation et plus tard mis à jour via Pyrus.
  3. Pyrus est fait pour le scénario développement/déploiement. Une commande "deploy" permettra de gérer le déploiement sur un serveur de production
  4. Le code de Pyrus est plus petit et utilise beaucoup moins de mémoire.
  5. Les formats supportés par défaut sont .tar, .tgz, .tbz, .zip, and .phar
  6. La version minimum requise est PHP 5.3+ qui permet d'utiliser les fonctionnalités avançées telles que les itérateur SPL, XMLReader/XMLWriter, l'extension ZIP, l'extension phar (si activée), les exceptions
  7. Le support des applications (en plus des paquetages) via les rôles www and cfg (fichiers de configuration)
  8. Pyrus peut installer la quasi-totalité des paquetages utilisant le format 2.0 de package.xml sans avoir besoin de modifier le code. Vous pouvez également utiliser Pyrus pour gérer vos paquetages PEAR.

Octobre 2007 – Arnaud Limbourg: Rendez-vous flex

Le rendez-vous Flex d'hier s'est bien déroulé, les réactions sont positives. Si vous avez des remarques sur la session n'hésitez pas à poster un commentaire ou envoyer un mail à bureau@afup.org.

Certains d'entre-vous n'ont pas bien vu les exemples, nous mettrons bientôt à disposition le code des exemples que Mike à présenté.

Une photo de la salle: http://www.flickr.com/photos/arnaudlimbourg/1550788702/

Octobre 2007 – Arnaud Limbourg: Rendez-vous flex

Le rendez-vous Flex d'hier s'est bien déroulé, les réactions sont positives. Si vous avez des remarques sur la session n'hésitez pas à poster un commentaire ou envoyer un mail à bureau@afup.org.

Certains d'entre-vous n'ont pas bien vu les exemples, nous mettrons bientôt à disposition le code des exemples que Mike à présenté.

Une photo de la salle: http://www.flickr.com/photos/arnaudlimbourg/1550788702/

Octobre 2007 – PHP Index: Symfony 1.0.8

La nouvelle version du framework symfony est disponible.

Cette version estampillée 1.0.8 vient principalement corriger une dizaine de bugs, et changer certains chemins, jusqu'à maintenant absolus, en chemins relatifs. En effet l'utilisation de chemins absolus posait parfois problème lors de la mise en production.
Voici le changelog:

#  r5471: fixed admin main.css - absolute to relative paths (#1889)
#  r5355: plugin-install tasks create relative symlink instead of absolute symlink
#  r5348: fixed EzComponents library inclusion (#2193)
#  r5344: allow using a custom form id (#1899)
#  r5339: fixed sfPropelData error message (#2218)
#  r5308: fixed sfFileCache::clean() when dir does not exist (#2294)
#  r5160: fixed double call to clearCredentials() in sfBasicSecurityUser
#  r5153: fixed code completion not working with sfTestBrowser
#  r5149: fixed bug in _get_options_from_objects (#1526)
#  r5145: fixed ETag to be compliant with the HTTP1.1 spec (#2216)
#  r5141: fixed consistent syntax of i18n helper function when i18n is off
#  r5061: fixed blank screen of death (#2231 and #1862)
#  r5001: fixed sfBasicSecurityFilter should not secure the "secure" action either
A cette occasion, les développeurs du projet annoncent que la sortie de la prochaine version 1.0.9 devrait être en meilleur accord avec le calendrier prévu, et donc être disponible d'ici 2 à 3 semaines.

Site officiel
Téléchargement

Octobre 2007 – Rom's blog: Everybody wants to rule the world…

Microsoft et Zend collaborent sur une implémentation PHP d’InfoCard :

http://www.lemondeinformatique.fr/actualites/lire-microsoft-et-zend-collaborent-sur-une-implementation-php-d-infocard-24268.html

Octobre 2007 – Hello Design: Les 1er ElePHPants

Les premiers ElePHPants PHP sont arrivés... Vous pouvez aller visiter la galerie photo de mon site à partir de ce lien (cliquer ici) ou visualiser l'aventure des elephants sur le site de Nexen (cliquer ici)

Octobre 2007 – PHP Index: phpMyAdmin 2.11.1.1

La nouvelle release de phpMyAdmin 2.11.1.1 est aujourd'hui disponible.

Cette version apporte un correctif d'une faille de sécurité XSS à partir du fichier setup.php.

Octobre 2007 – PHPortail: Les inscriptions au forum PHP 2007 sont ouvertes (16/10/07)

«Le forum PHP 2007 se tiendra les 21 et 22 novembre à Paris. Des poids lourds de l’industrie Internet seront présents : Adobe, France Télécom et le créateur de PHP, Rasmus Lerdorf.

Ce forum...

Octobre 2007 – PHPortail: Webkit (Safari) vient d’intégrer la fonctionnalité CSS font-face (16/10/07)

Webkit est le coeur du navigateur Safari développé par Apple.

Une fonctionnalité CSS, très intéressante, @font-face vient de voir le jour.

L’instruction @font-face du CSS permet...

Octobre 2007 – PHPortail: XAMPP 1.6.4 (16/10/07)

XAMPP est une archive de distribution pour la plateforme AMP (LAMP, WAMP, MAMP). Cette dernière version met à jour Apache (2.2.6), PHP (5.2.4) et phpMyAdmin (2.11.1).

Octobre 2007 – PHPortail: MemHT Portal 3.2 (16/10/07)

MemHT est un portail pour générer des sites internets.

Son atout principal se veut la simplicité d'utilisation et d'installation.


C'est un portail Web ( CMS ou SGC ) écrit en PHP/MySQL...

Octobre 2007 – PHPortail: Sécurité : Vérifiez les listes noire de SPAM (16/10/07)

Le choix d'une bonne liste noire en temps réel est efficace pour se débarrasser du pourriel. Malheureusement, si votre serveur SMTP se retrouve listé dans l'une ou l'autre de ces listes, vos...

Octobre 2007 – PHP Québec: Assemblée Générale & Élections 2007-2008

Montréal, le 16 octobre 2007

L'équipe de PHP Québec vous invite à son Assemblée Générale qui aura lieu le samedi 27 octobre 2007 à 13h00 au Pub de l'ÉTS (530, rue Peel, Montréal).

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». Ensuite, la fusion PHP Québec / Conférence PHP Québec sera présentée aux membres. 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és pour un poste bénéficieront de deux minutes pour se présenter. Les candidats doivent se déclarer en envoyant 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 (Québec et Montréal)

Le poste de président, de secrétaire et de responsable de groupe sont vacants. Le poste de président et de secrétaire devront être comblés.


À noter:

* Selon la politique électorale (cf. Règlements Internes section 5.1), un maximum de 50% des postes sont renouvelables.
* Toutes les personnes désirant voter ou postuler pour un poste devront être membre en règle à compter du 20 octobre 2007, tel que mentionné dans les articles 2.0 et 5.4 des Règlements Internes.
* 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 aux Règlements Internes section 4.0.


Pour obtenir une copie des documents officiels:

Règlements internes
http://www.phpquebec.org/documents/phpquebec/reglements_internes_phpquebec.pdf

Charte PHP Québec
http://www.phpquebec.org/documents/phpquebec/charte_phpquebec.pdf

Présentation aux membres
http://www.phpquebec.org/documents/phpquebec/presentation_aux_membres_phpquebec.pdf


L'Equipe de PHP Québec

Octobre 2007 – PHP Index: IBM : Débuter avec les frameworks PHP, partie 2

Il y a quelques jours, Duane O'Brien commençait un tutoriel sur l'utilisation de trois frameworks PHP : Zend, symfony, CakePHP. La seconde partie de ce tutoriel est aujourd'hui disponible sur le site d'IBM.

Après avoir présenté succinctement les frameworks Zend, symfony et CakePHP et leur mode d'installation dans la première partie, Duane O'Brien passe à une partie plus technique dans le deuxième volet de sa série d'articles consacré aux frameworks PHP.

Pour chacun des frameworks, il explique comment passer à l'étape suivante et construire une application permettant d'enregistrer des articles, de les afficher sous former de liste et de les consulter.

A la fin du tutoriel, il laisse entendre que la partie suivante couvrira un gestionnaires de commentaires pour les articles publiés.

Octobre 2007 – PHP Index: Débugger les applications PHP avec syslog

William B. Zimmerly a écrit un article sur le site d'IBM concernant l'utilisation de syslog afin de débugger des applications PHP.

Syslog est un protocole connu sur les systèmes Unix, qui permet de centraliser les journaux d'évènements des ordinateurs présents sur un réseau. On peut ainsi retrouver plus facilement les défaillances de ces ordinateurs.

Il existe une fonction PHP qui permet d'utiliser ce protocole pour faciliter le débuggage des applications PHP. William B. Zimmerly donne un exemple d'utilisation de cette fonction. Il est alors possible d'indiquer dans les fichiers log du système les heures d'accès à certaines pages de vos applications, les valeurs de variables à un moment précis, qui exécute des requêtes SQL, etc.

Article

Octobre 2007 – PHP Index: Zend Core 2.5

Zend annonce la sortie de son Zend Core 2.5.

Zend a profité de la ZendCon qui se tenait du 8 au 11 octobre pour annoncer la sortie de son Zend Core en version 2.5. Les améliorations apportées à cette sortie visent à renforcer PHP5 dans le déploiement d'applications Web stratégiques, on retrouve ainsi les éléments suivants :

  • Des extensions PHP 5.2.4 certifiées, des bibliothèques, des pilotes de bases de données, le support des web services et tous les autres composants nécessaires aux applications professionnelles.
  • Une installation simplifiée du stack complet pour applications PHP, comprenant le serveur web, les bases de données, les extensions et le Zend Framework, avec désormais la possibilité d’un déploiement automatique et l’intégration d’outils de gestion de système de référence.
  • PHP 5.2.4 sera supporté pendant 2 ans à partir de l’introduction de la prochaine version du langage. Une offre de support allant du support web jusqu’à un support téléphonique 24 heures sur 24, 7 jours sur 7.
Communiqué de presse

Octobre 2007 – z-f.fr: Débuter avec 3 frameworks PHP

Forum: Brèves
Auteur: philippe
Écrit le: Wed, 17 Oct 2007 14:00:18 +0200
Dernier message: Wed, 17 Oct 2007 14:00:18 +0200

Octobre 2007 – z-f.fr: Zend_Layout bientot dans l'incubateur

Forum: Brèves
Auteur: philippe
Écrit le: Wed, 17 Oct 2007 13:54:14 +0200
Dernier message: Wed, 17 Oct 2007 17:14:28 +0200

Octobre 2007 – PHP Québec: 10/27 13:00 Assemblée Générale et Élections 2007-2008

L'équipe de PHP Québec vous invite à son Assemblée Générale qui aura lieu le samedi 27 octobre 2007 à 13h00 au Pub de l'ÉTS (530, rue Peel, Montréal).

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». Ensuite, la fusion PHP Québec / Conférence PHP Québec sera présentée aux membres. 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és pour un poste bénéficieront de deux minutes pour se présenter. Les candidats doivent se déclarer en envoyant 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 (Québec et Montréal)

Le poste de président, de secrétaire et de responsable de groupe sont vacants. Le poste de président et de secrétaire devront être comblés.


À noter:

* Selon la politique électorale (cf. Règlements Internes section 5.1), un maximum de 50% des postes sont renouvelables.
* Toutes les personnes désirant voter ou postuler pour un poste devront être membre en règle à compter du 20 octobre 2007, tel que mentionné dans les articles 2.0 et 5.4 des Règlements Internes.
* 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 aux Règlements Internes section 4.0.


Pour obtenir une copie des documents officiels:

Règlements internes
http://www.phpquebec.org/documents/phpquebec/reglements_internes_phpquebec.pdf

Charte PHP Québec
http://www.phpquebec.org/documents/phpquebec/charte_phpquebec.pdf

Présentation aux membres
http://www.phpquebec.org/documents/phpquebec/presentation_aux_membres_phpquebec.pdf

Octobre 2007 – PHP Index: phpMyAdmin 2.11.1.2

La version 2.11.1.2 de phpMyAdmin est sortie hier, moins d'une semaine après la version 2.11.1.1.

Cette version corrige une faille de sécurité de type XSS. Tout le monde est donc invité à migrer vers cette version.

Descrition de la faille
Télécharger
Changelog

Octobre 2007 – PHP Index: mnoGoSearch 3.3.5

La version 3.3.5 du moteur de recherche et d'indexation mnoGoSearch vient de paraître.

Il s'agit d'une version de maintenance visant à corriger une demi-douzaine d'anomalies ainsi qu'une faille de sécurité (XSS). Elle apporte également quelques améliorations mineures.

Octobre 2007 – PHP Index: Evènement développeur autour d'eZ Publish

eZ Systems organise un évènement développeur à Paris le 31 octobre.

La communauté eZ est en pleine croissance (en partie grâce à vous !), en parallèle de cela, eZ se professionnalise mais n'en oublie pas, au contraire, ses idées et son origine, convaincu que la force de notre écosystème réside dans l'ouverture et le partage.

Pour cette raison, nous organisons un événement "développeur" en marge de notre séminaire partenaire qui se tient à Paris le 31 octobre 2007.
Il s'agit d'1/2 journée (le 31 en après midi) ouverte à tous mais axée principalement sur des aspects Développement d'eZ Publish, avec un minimum d'enrobage marketing et de slideware ! Il s'agit d'une première, et nous souhaitons clairement que ce ne soit pas la dernière.

Si vous êtes développeur ou si vous avez dans vos équipes des développeurs travaillant sur eZ, c'est l'occasion idéal de venir approfondir et échanger notamment autour des nouveautés d'eZ !
Nous proposons le programme suivant :

14.30 : Introduction & dernières infos d'eZ Systems Western Europe - Roland Benedetti
14.45 : eZ Labs et le développement d'eZ - Paul Borgermans
15.20 : Tutoriel sur le sujet des migrations vers eZ Publish 4 et PHP5
16.00 : Open Conference (soumettez vos idéesou nous ferons avec celles des autres :-) )
18.30 : Fermeture officielle, pour ceux qui veulent continuer l'échange, garder votre début de soirée ou plus pour apéritifs / restaurants ...
L'évènement se passera à Eurosites (8 bis, rue de la Fontaine au Roi 75011, Paris)
Plus d'infos ici : http://www.eurosites.fr/location-salle-paris-republique.html
Comme le nombre de places pourrait être limité, veuillez nous informer de votre venue à info.fr@ez.no

Proposé par Roland

Octobre 2007 – Kamelot Blog: Loïc aime PHP

Loïc aime PHP Je lui fait déjà découvrir les bonnes choses.

Octobre 2007 – PHP Index: Forum PHP 2007 : rendez-vous les 21 et 22 novembre 2007 à Paris

La grand messe annuelle des utilisateurs de PHP réunira de nombreuses personnalités du monde PHP : le père du PHP Rasmus Lerdorf, Andrei Zmievski, développeur du langage PHP et expert unicode, Derick Rethans, créateur de Xdebug et architecte à eZ Systems ou encore Brian Shire, responsable technique de Facebook.

Organisé à Paris, les 21 et 22 novembre prochains par l'Association Française des Utilisateurs de PHP (www.afup.org), le Forum PHP 2007 propose 2 journées de conférences, orientées, fonctionnel et technique. Une occasion unique d'échanges avec l'ensemble de la communauté PHP française, les meilleurs
spécialistes et les entreprises utilisatrices.

Infos pratiques :
Date > 21 & 22 novembre 2007
Lieu > ASIEM 6, Rue Albert de Lapparent Paris 7°
Tarif > 120 euros la journée, 180 euros les deux jours
Inscription et détails > http://afup.org/forumphp

Proposé par perrick penet

Octobre 2007 – Rom's blog: Del.icio.us migre vers PHP et le Framework Symfony

C’est pas moi qui le dit :

http://www.symfony-project.com/blog/2007/10/02/delicious-preview-built-with-symfony

Octobre 2007 – Hello Design: Rappel: Forum PHP les 21 et 22 novembre 2007

 


 

Nous vous attendons :-)

 

http://www.afup.org/forumphp

Octobre 2007 – Apprendre-PHP.com: Les importations de fichiers avec require() et include()

La grande majorité des sites web dynamiques ou des applications ont besoin de réutiliser des parties de code identique à plusieurs endroits d'une même page, ou bien dans plusieurs pages différentes. C'est le cas par exemple des librairies de fonctions utilisateurs ou bien des fichiers de configuration. Plutôt que de réécrire à chaque fois le code, il existe des fonctions (structures de langage en réalité) capables d'importer et exécuter le code à réutiliser dans la page. Il s'agit des fonctions include() et require()

Octobre 2007 – Apprendre-PHP.com: Générer une liste déroulante dynamiquement

Le principal atout de PHP est de pouvoir générer dynamiquement du code HTML, ce qui facilite grandement la tâche du webmaster lorsqu'il faut mettre à jour certaines zones d'un site Internet. Parmi elles, nous pouvons citer les liste déroulantes de formulaire (élément repéré par les balises <select> et </select>).

Octobre 2007 – Apprendre-PHP.com: MySQL : Introduction à l'optimisation

MySQL est un SGBDR libre, performant et surtout simple à utiliser et à administrer. Il est toujours étonnant de voir autant de développeurs et de DBA sans expériences SQL, chargés de l'administration des serveurs MySQL. Sur de petites applications, peu sollicitées, cela ne porte pas toujours à conséquences, mais petite application deviendra grande et de mauvais choix faits au départ imposent presque à chaque fois une remise en question profonde du schéma et la réécriture des requêtes.

Octobre 2007 – Apprendre-PHP.com: Introduction au langage PHP

Le langage PHP a été inventé par Rasmus LERDORF en 1995 pour son usage personnel (mise en ligne de son CV en l'occurence). Autrefois abbréviation de Personal HomePage devenue aujourd'hui Hypertext Preprocessor, PHP s'impose comme un standard dans le monde de la programmation web par ses performances, sa fiabilité, sa souplesse et sa rapidité.

Octobre 2007 – Digital Fashion: How I use the Zend Framework

Having started a few applications using the Zend Framework, I came out with a few practices that I tend to use over and over. In this post I'll quickly expose some of them and explain why I do things the way I do them. As you'll notice, most of them are already widely known and used over the ZF developer's community. Please remember that these practices are just what I do, and come with no garanty at all to be best practices.

Directory structure

First thing to work out when starting a new Zend Framework powered application, at least if you decide to use the ZF's MVC component, is the application's directory structure. Here is the one I used, which is a slightly modified version of the official recommended structure. This is essentially a standard modular structure with all directories needed to store various additional data from your application.

application/
	cache/
	config/
		application.ini
		routes.ini
	data/
	layouts/scripts/
	library/App/
	logs/
	modules/
		default/
		user/
document_root/
	css/
	images/
	index.php
	js/

As you can see, I have many directories, each dedicated to a specific file type. This has many advantages, such as always knowing where to find what you're looking for or easily process files of a certain type (think grep foo logs/*). Also, I name my directories explicitly. I used to call the config directory etc, which is the directory holding most configurations files under UNIX systems, but it may not appear that clear to non-UNIX user, while config is clear enough for everyone.

Another point you might notice is the that all applications files and data are placed outside the document_root. This is done to avoid unwanted access to such resources. While this is the best way, in my opinion, to do, it may not always be possible (like when you have no control on your actual DocumentRoot. In this case, you may consider having the following structure:

application/
	cache/
	config/
		application.ini
		routes.ini
	data/
	layouts/scripts/
	library/App/
	logs/
	modules/
		default/
		user/
	tasks/
css/
images/
index.php
js/

Then you can deny any web access to the application/ directory with the following htaccess rules:

<Directory application>
    Order allow,deny
    Deny from all
</Directory>

Did you say modular ?

Yeah, I said it actually. Modules in Zend Framework are groups of controllers (along with their corresponding views and models) which sits in their own namespace. One could argue that module's primary goal is to ease code re-use, but I personnaly dunno, as I personnally still have not seen such a use of modules. The drawbacks of re-usable code is that it needs to be abstract enough to fit ant particular situation or so. In this context, I only have a single separate module alongside the default one: the user module. It has Index and Auth controllers, respectively used to perform CRUD and login/logout operations.

Having re-usable modules implies that all modules containes its own models, or at least, knows where (ie, in which other module) to find its required models. There comes Xend's model loader. This is an action helper which ease the load of models inside controllers, like:

$this->_helper->modelLoader(array('MyCoolModel', 'MyOtherModel'));

Easy heh ? The bad point with this helper is that it is restricted to, or at best tricky to use outside, action controllers. That is why I developped my own library loader which I shall present in another blogpost soon.

Models naming convention

Using the Xend's model loader trained me to adopt what I consider a good model naming convention, basically, it just follows the controller's conventions, that is, prefix the model name with the module's name, so that for example my user model is named like User_Users (the first User is the module name, the second Users is the ucfirst'ed tablename). whenever I need to have row specific model I just postfix the whole model name with _Row. It gives the following directory architecture:

modules/user/models/
	Users/Row.php
	Users.php

I'll eventually load User_Users_Row from User/Users.php with a simple require:

require_once dirname(__FILE__).'/Users/Row.php';

Personal library namespace

A recurring question from ZF beginners is to know where they should put their own library classes. The answer is pretty simple actually. You just create your own library namespace alongside Zend's. Let's say you wish to extend Zend_Db_Table_Abstract to add your own logic. The first thing to do is to choose the name of your namespace, we will use Foobar as an example, because this is a cool name. Your class will be named like Foobar_Db_Table_Abstract, and located in Foobar/Db/Table/Abstract.php, which in turn should be located anywhere in your include_path. So you could have the following directory structure:

application/library/
	Zend/
	Foobar/
	Riskle/

Just remember ZF's naming convention: from the filename, strip the .php, replace slashes (/) with underscores (_), and you've got the class name. Simple heh ?

App_ library namespace (App_Controller_Action, etc)

Additionnaly to my personal library namespace, I also have a special App namespace, which I always locate into application/library/App. This namespace principally provides two classes, App_Controller_Action and App_Db_Table_Abstract, which basically extend respectively Zend_Controller_Action and Zend_Db_Table_Abstract. All my controllers and models then use the App_ namespace as a reference, so that I can easily change the base class for all my controllers / models as easily as changing the parent of the corresponding App class.

Using third party components

Using ZF compatible components is just easy as dropping them in your include path. By ZF compatible, I mean following the ZF class naming convention. Just make source it's in your include_path, and you can start using them right away. Components library I use includes:

I put them in a particular path (~/share/php/) which I add to my include path.

note: Some dikdiks tend to store third-party in application/library/ instead of a completely separate place. This problem looks a lot like dynamically linked vs static binaries. With static binaries (in our case, storing all in application/library/), you don't have to care about dependencies, as every single needed line of code is shipped with your application. This ease redistribution and installation a lot, but makes your download larger. You also have to manage yourself dependencies upgrade (which in turn save this hassle from the end-user). With dynamically linked applications, you avoid duplicated code by forcing the use of a global, site wide, code repository (generally /usr/share/php on unix systems). You also transfer dependencies handling to the end-user (and/or the packaging system). Really, this is a choice to make yourself I think.

Things get a little bit more complicated when the components does not follow the naming convention. What I do in this case is just puting them into a separate directory tree called vendor/, which I don't forget to add to my include path of course, then I just manually includes need files. We could have done a one-to-one match between the component's public classes and custom well-named classes, but it's much of a hassle for the benefit I think.

That's all folks !

Well that's all for today. I'll try to write some more in the future about application building with the Zend Framework, there are still a lot of things to be said, invented, and discovered :-)

Octobre 2007 – Digital Fashion: How I use the Zend Framework

Having started a few applications using the Zend Framework, I came out with a few practices that I tend to use over and over. In this post I'll quickly expose some of them and explain why I do things the way I do them. As you'll notice, most of them are already widely known and used over the ZF developer's community. Please remember that these practices are just what I do, and come with no garanty at all to be best practices.

Directory structure

First thing to work out when starting a new Zend Framework powered application, at least if you decide to use the ZF's MVC component, is the application's directory structure. Here is the one I used, which is a slightly modified version of the official recommended structure. This is essentially a standard modular structure with all directories needed to store various additional data from your application.

application/
	cache/
	config/
		application.ini
		routes.ini
	data/
	layouts/scripts/
	library/App/
	logs/
	modules/
		default/
		user/
document_root/
	css/
	images/
	index.php
	js/

As you can see, I have many directories, each dedicated to a specific file type. This has many advantages, such as always knowing where to find what you're looking for or easily process files of a certain type (think grep foo logs/*). Also, I name my directories explicitly. I used to call the config directory etc, which is the directory holding most configurations files under UNIX systems, but it may not appear that clear to non-UNIX user, while config is clear enough for everyone.

Another point you might notice is the that all applications files and data are placed outside the document_root. This is done to avoid unwanted access to such resources. While this is the best way, in my opinion, to do, it may not always be possible (like when you have no control on your actual DocumentRoot. In this case, you may consider having the following structure:

application/
	cache/
	config/
		application.ini
		routes.ini
	data/
	layouts/scripts/
	library/App/
	logs/
	modules/
		default/
		user/
	tasks/
css/
images/
index.php
js/

Then you can deny any web access to the application/ directory with the following htaccess rules:


    Order allow,deny
    Deny from all

Did you say modular ?

Yeah, I said it actually. Modules in Zend Framework are groups of controllers (along with their corresponding views and models) which sits in their own namespace. One could argue that module's primary goal is to ease code re-use, but I personnaly dunno, as I personnally still have not seen such a use of modules. The drawbacks of re-usable code is that it needs to be abstract enough to fit ant particular situation or so. In this context, I only have a single separate module alongside the default one: the user module. It has Index and Auth controllers, respectively used to perform CRUD and login/logout operations.

Having re-usable modules implies that all modules containes its own models, or at least, knows where (ie, in which other module) to find its required models. There comes Xend's model loader. This is an action helper which ease the load of models inside controllers, like:

$this->_helper->modelLoader(array('MyCoolModel', 'MyOtherModel'));

Easy heh ? The bad point with this helper is that it is restricted to, or at best tricky to use outside, action controllers. That is why I developped my own library loader which I shall present in another blogpost soon.

Models naming convention

Using the Xend's model loader trained me to adopt what I consider a good model naming convention, basically, it just follows the controller's conventions, that is, prefix the model name with the module's name, so that for example my user model is named like User_Users (the first User is the module name, the second Users is the ucfirst'ed tablename). whenever I need to have row specific model I just postfix the whole model name with _Row. It gives the following directory architecture:

modules/user/models/
	Users/Row.php
	Users.php

I'll eventually load User_Users_Row from User/Users.php with a simple require:

require_once dirname(__FILE__).'/Users/Row.php';

Personal library namespace

A recurring question from ZF beginners is to know where they should put their own library classes. The answer is pretty simple actually. You just create your own library namespace alongside Zend's. Let's say you wish to extend Zend_Db_Table_Abstract to add your own logic. The first thing to do is to choose the name of your namespace, we will use Foobar as an example, because this is a cool name. Your class will be named like Foobar_Db_Table_Abstract, and located in Foobar/Db/Table/Abstract.php, which in turn should be located anywhere in your include_path. So you could have the following directory structure:

application/library/
	Zend/
	Foobar/
	Riskle/

Just remember ZF's naming convention: from the filename, strip the .php, replace slashes (/) with underscores (_), and you've got the class name. Simple heh ?

App_ library namespace (App_Controller_Action, etc)

Additionnaly to my personal library namespace, I also have a special App namespace, which I always locate into application/library/App. This namespace principally provides two classes, App_Controller_Action and App_Db_Table_Abstract, which basically extend respectively Zend_Controller_Action and Zend_Db_Table_Abstract. All my controllers and models then use the App_ namespace as a reference, so that I can easily change the base class for all my controllers / models as easily as changing the parent of the corresponding App class.

Using third party components

Using ZF compatible components is just easy as dropping them in your include path. By ZF compatible, I mean following the ZF class naming convention. Just make source it's in your include_path, and you can start using them right away. Components library I use includes:

I put them in a particular path (~/share/php/) which I add to my include path.

note: Some dikdiks tend to store third-party in application/library/ instead of a completely separate place. This problem looks a lot like dynamically linked vs static binaries. With static binaries (in our case, storing all in application/library/), you don't have to care about dependencies, as every single needed line of code is shipped with your application. This ease redistribution and installation a lot, but makes your download larger. You also have to manage yourself dependencies upgrade (which in turn save this hassle from the end-user). With dynamically linked applications, you avoid duplicated code by forcing the use of a global, site wide, code repository (generally /usr/share/php on unix systems). You also transfer dependencies handling to the end-user (and/or the packaging system). Really, this is a choice to make yourself I think.

Things get a little bit more complicated when the components does not follow the naming convention. What I do in this case is just puting them into a separate directory tree called vendor/, which I don't forget to add to my include path of course, then I just manually includes need files. We could have done a one-to-one match between the component's public classes and custom well-named classes, but it's much of a hassle for the benefit I think.

That's all folks !

Well that's all for today. I'll try to write some more in the future about application building with the Zend Framework, there are still a lot of things to be said, invented, and discovered :-)

Octobre 2007 – Apprendre-PHP.com: Lancement de la version 2 d'Apprendre-PHP

Bonjour,

Octobre 2007 – jp.fox: Un petit captcha en php

Je ne trouvais pas mon bonheur sur le net (je n'ai peut être pas assez cherché) alors j'ai écrit un petit filtre antispam pour les formulaires en PHP. Il est facile à mettre en oeuvre et ne nécessite pas l'installation de police TrueType sur le serveur.

?

Vous pouvez faire un test ici

Pour ceux qui sont intéressés, voici le code source ainsi qu'un petit exemple l'utilisant.


ptitcaptcha.php

[php]
<?php
/**
 * Ptitcaptcha : simple php captcha system
 * 
 * @author Jean-Pierre Morfin
 * @license Creative Commons By
 * @license http://creativecommons.org/licenses/by/2.0/fr/
 */

/* Change it to have a specific encoding ! */
define("PTITCAPTCHA_ENTROPY","what-ever-you-want");

/* Choose length (max 32) */
define("PTITCAPTCHA_LENGTH",5);

$GLOBALS["ptitcaptcha_akey"] = md5(uniqid(rand(), true));

/**
 * Helper to generate html form tags
 *
 */
class PtitCaptchaHelper
{
	/**
	 * Generate IMG Tag
	 *
	 * @param string $baseuri : relative or absolute path to folder containing this file on web
	 * @return IMG Tag
	 */
	function generateImgTags($baseuri)
	{
		return "<a href=\"#\"><img alt=\"???\" title=\"?\"".
			" src=\"".$baseuri."ptitcaptcha.php?pck=".$GLOBALS['ptitcaptcha_akey']."\"".
			" id=\"ptitcaptcha\"".
			" onclick=\"javascript:this.src='".$baseuri."ptitcaptcha.php?pck=".
			$GLOBALS['ptitcaptcha_akey'].
			"&z='+Math.random();return false;\" /></a>\n";
	}
	
	/**
	 * Generate hidden tag (must be in a form)
	 *
	 * @return input hidden tag
	 */
	function generateHiddenTags()
	{
		return "<input type=\"hidden\" name=\"ptitcaptcha_key\" value=\"".$GLOBALS['ptitcaptcha_akey']."\"/>";
	}
	
	/**
	 * Generate input tag (must be in a form)
	 *
	 * @return input tag
	 */
	function generateInputTags()
	{
		return "<input type=\"text\" name=\"ptitcaptcha_entry\" value=\"\"/>";
	}

	/**
	 * Check if user input is correct
	 *
	 * @return boolean (true=correct, false=incorrect)
	 */
	function checkCaptcha()
	{
		if(	isset($_POST['ptitcaptcha_entry']) && 
			$_POST['ptitcaptcha_entry'] == PtitCaptchaHelper::_getDisplayText($_POST['ptitcaptcha_key']))
		{
			return true;
		}
		return false;
	}
	
	/**
	 * Internal function
	 *
	 * @param string $pck
	 * @return string
	 */
	function _getDisplayText($pck)	// internal function
	{
		$src=md5(PTITCAPTCHA_ENTROPY.$pck);
		$txt="";
		for($i=0;$i<PTITCAPTCHA_LENGTH;$i++)
			$txt.=substr($src,$i*32/PTITCAPTCHA_LENGTH,1);
		return $txt;
	}
}	


// If script called directly : generate image
if(basename($_SERVER["SCRIPT_NAME"])=="ptitcaptcha.php" && isset($_GET["pck"]))
{
	$width = PTITCAPTCHA_LENGTH*10+10;
	$height = 30;

	$image = imagecreatetruecolor($width, $height);
	$bgCol = imagecolorallocate($image, rand(128,255), rand(128,255), rand(128,255));
	imagefilledrectangle($image,0,0,$width,$height,$bgCol);
		
	$txt = PtitCaptchaHelper::_getDisplayText($_GET["pck"]);
			
	for($c=0;$c<PTITCAPTCHA_LENGTH*2;$c++)
	{
		$bgCol = imagecolorallocate($image, rand(100,255), rand(100,255), rand(100,255));
		$x=rand(0,$width);
		$y=rand(0,$height);
		$w=rand(5,$width/2);
		$h=rand(5,$height/2);
		imagefilledrectangle($image,$x,$y,$x+$w,$y+$h,$bgCol);
		imagecolordeallocate($image,$bgCol);
	}
	for($c=0;$c<PTITCAPTCHA_LENGTH;$c++)
	{
		$txtCol = imagecolorallocate($image, rand(0,128) , rand(0,128), rand(0,128));
		imagestring($image,5,5+10*$c,rand(0,10),substr($txt,$c,1),$txtCol);
		imagecolordeallocate($image,$txtCol);
	}

	header("Content-type: image/png");
	imagepng($image);
	imagedestroy($image);
}

test.php

[php]
<?php
require("ptitcaptcha.php");
?>

<html>
<head><title>PtitCaptcha</title></head>
<body>
<form action="test.php" method="post">
<?=PtitCaptchaHelper::generateImgTags("./")?>
<?=PtitCaptchaHelper::generateHiddenTags()?>
<?=PtitCaptchaHelper::generateInputTags()?>
<input type="submit" />
</form>

<?php
if(PtitCaptchaHelper::checkCaptcha())
    echo "Good";
else
    echo "Bad";
?>

</body>
</html>

Octobre 2007 – PHP Index: Les évolutions de MySQL

Lemondeinformatique.fr publie un article sur la conférence utilisateur de MySQL qui a eu lieu hier à Paris. Les évolutions de la version 6 du SGBD open source ont été présentées ainsi que les améliorations envisagées pour la version 7.

Parmi les nouveautés de la version 6, on peut noter l'arrivée du nouveau moteur transactionnel, Falcon, et la possibilité d'effectuer des réplications semi-synchrones voire synchrones.

La version 7 sera axée sur la sécurtié, un besoin essentiel pour les banques : gestion des groupes et des rôles, cryptage transparent des données, audit des données, support des systèmes d'authentification externes, etc.


Lire l'article

Octobre 2007 – PHP Index: TYPO3 4.1.3

La version 4.1.3 de TYPO3 est disponible depuis cette semaine. Il s'agit d'une version de maintenance pour apporter des corrections à des bugs.

Parmi les corrections, on note un nombre assez important de points sur htmlArea RTE, à commencer par le passage à la version 1.5.4.
Pour plus d'informations, n'hésitez pas à consulter le Changelog TYPO3 4.1.3.

Octobre 2007 – PHP Index: 13 étapes pour optimiser un site web

Cet article, publié à l'origine par l'équipe de Yahoo! Performance, présente quelques règles importantes pour optimiser les performances de votre site web.

De nombreux points sont abordés tels que :

  • La configuration du serveur Apache avec la directive « ExpiresActive » ou l'utilisation du module « mod_gzip module » pour la compression des contenus.
  • L'organisation des styles et des scripts « javascript » : fusionner tous vos scripts « js » dans un seul fichier afin de limiter le nombre de requêtes serveurs. Et si possible, faites appel à vos scripts en fin de page juste avant la balise < /body> pour de ne pas géner le chargement de la page.
  • Présentation de quelques outils pour vous aider à optimiser votre site comme Firebug et LiveHTTPHeaders pour Firefox.
Tout au long de l'article, vous trouverez aussi d'autres liens sur l'optimisation des pages web.

Retrouver l'article complet : Web Site Optimization: 13 Simple Steps

Octobre 2007 – Apprendre-PHP.com: Forcer le téléchargement d'un fichier

Cette portion de script présente un moyen simple et efficace de forcer le téléchargement d'un fichier. Comment ça forcer un téléchargement ? Prenons l'exemple concret d'un fichier PDF car c'est celui qui semble le plus approprié pour ce genre de code.

Octobre 2007 – PHP Index: Google contribuera au code de MySQL

Certaines des applications de Google sont basées sur MySQL, et afin de tirer au mieux profit des performances du SGBD, Google a enrichi le code source de MySQL.

Ces modifications apportées par Google pourraient être intégrées à MySQL dans une version 6.1 prévue pour début 2009, la version 6.0 est attendue fin 2008.

A lire sur LMI

Octobre 2007 – Apprendre-PHP.com: Sécuriser un répertoire par authentification HTTP

Le tutoriel qui va suivre et une initiation à la sécurisation d'un dossier sur un serveurWeb de type Apache. Il vous apprendra à définir des règles deproctection dans un fichier .htaccess et des couples logins / mots depasse autorisés à accéder au dossier.

Octobre 2007 – Apprendre-PHP.com: URL Rewriting ou réécriture d'url avec Apache

Le tutoriel que nous allons découvrir ensemble introduit les bases de la réécriture d'URL grâce au mode Rewrite du serveur web Apache. Il n'est pas exhaustif mais constitue une base suffisamment solide pour mettre en place un tel système qui fonctionne et qui soit efficace.

Octobre 2007 – PHP Index: Comparaison des SGBD : Oracle, MySQL et PostgreSQL (Partie 1)

Pas évident de distinguer les différences entre ces trois bases de données, le site "Database journal" nous propose un article en deux parties en abordant d'abord les fonctionnalités importantes d'un SGBD.


Les procédures stockées :
Les procédures stockées permettent de lire, manipuler et mettre à jour des données en une seule étape. A noter que ces portions de code stockées dans la base de données ne sont pas toujours portables et compatibles avec les autres types de bases. Les trois SGBD supportent les procédures stockées, Oracle supporte également les packages ou des collections de procédures stockées

Views :
Là aussi, les vues sont supportées par nos trois bases de données, la différence pourra se faire sur des requêtes complexes (à voir dans la deuxième partie)

Materialized Views (snapshots) :
Le snapshot, supporté par Oracle, est un objet contenant le résultat d'une requête SQL sur des tables (en lecture seule). MySQL et Postgresql ne les supportent pas par défaut.

Intégration des langages de développement :
La plupart des applications sont compatibles avec de nombreuses bases de données ainsi, les trois SGBD sont supportés par la majorité des langages orientés web : Java, PHP, Perl, Python, C#/.NET

Triggers :
Les trois SGBD intègrent les triggers, mais là aussi ces derniers peuvent poser quelques problèmes de portabilité ou de dispersion de code métier.

Sécurité :
Les trois bases de données peuvent comporter des vulnérabilités, où d’ailleurs, ils sortent régulièrement des mises à jour de sécurité. Cependant, avec la communauté open-source, les failles de sécurité peuvent être plus facilement détectés et ainsi être plus réactif sachant que le coût est bien moindre que sur une solution propriétaire.

Conclusion
Oracle, MySQL et PostgreSQL fournissent les mêmes fonctionnalités, la différence se fera sur les performances et la configuration. C’est dans la deuxième partie de l’article que nous verrons quelques distinctions.

Retrouver l'article complet : Database journal

Octobre 2007 – Apprendre-PHP.com: MySQL 5.0 : Les vues

Le langage SQL acronyme de Structured Query Language (Langage Structuré de Requêtes), a été conçu pour gérer les données dans un SGBDR. A l'aide des DML (Data Manipulation Language ie les requêtes SELECT, INSERT, UPDATE, DELETE) il est possible de manipuler ces données qui sont stockées dans des tables.

Octobre 2007 – Apprendre-PHP.com: 7ème édition du forum PHP : le chrono est lancé !

La grand messe annuelle sur PHP réunira pour la première fois la majorité des architectes du PHPGroup : le père du PHP Rasmus Lerdorf, Andrei Zmievski, Derick Rethans.

Octobre 2007 – PHP Index: MySQL est utilisé dans plus de 11 millions d'installations

Voici une interview de David Axmark, co-fondateur de l'éditeur suédois MySQL AB avec Allan Larsson et Michael Widenius où il revient sur la création du serveur de base de données MySQL, devenu « le plus populaire du monde ». Comme il nous le précise, « […] MySQL est utilisé à travers le monde dans plus de 11 millions d'installations et que l'on enregistre environ 50.000 téléchargements par jour »

Différents sujets sont abordés : les développements majeurs de MySQL, les modèles de licence, les parts de marché de MySQL, sa capacité à concurencer les autres SGBD.

Retrouvez l’interview sur NetEco

Octobre 2007 – Dur Comme Faire: Le Forum PHP 2007 se rapproche à grands pas

Je ne sais pas pour vous mais pour moi le temps file à une allure folle. Dans seulement trois semaines aura lieu le Forum PHP 2007. Cette année encore, ce sera l'occasion de rencontrer quelques "stars" internationales comme Rasmus Lerdorf, le créateur de PHP, Andrei Zmievski, Derrick Rethans...

Octobre 2007 – Arnaud Limbourg: Rappel: Forum PHP les 21 et 22 novembre 2007

Forum PHP 2007 les 21 et 22 novembre 2007 Nous vous attendons :-)

http://www.afup.org/forumphp

Octobre 2007 – Arnaud Limbourg: Rappel: Forum PHP les 21 et 22 novembre 2007

Forum PHP 2007 les 21 et 22 novembre 2007 Nous vous attendons :-)

http://www.afup.org/forumphp

Octobre 2007 – PHP Index: Comparaison des SGBD : Oracle, MySQL et PostgreSQL (Partie 2)

Requêtes complexes
Oracle peut supporter les requêtes les plus complexes avec quasiment aucune restriction sur le nombre de tables. Pour MySQL, sa limitation est de 61 tables sur une requête, cependant comme le rappelle l’auteur de l’article, une requête avec autant de tables est peu maniable et il est surtout important de privilégier l’optimisation. Les versions 8.x de Postgresql supportent les standards SQL92 avec peu de restrictions.


Les Index
Les index sont cruciaux pour l’optimisation de votre base de données. Oracle propose une surabondance de type d’index. MySQL supporte les index b-tree, hash, fulltext et les index GIS.
Postgresql propose aussi de nombreux index : b-tree and hash, r-tree… Mais ce sont les index « b-tree » qui sont généralement les plus utilisés.

Les audits
Oracle vous permet d’auditer par exemple les insert, update ou delete sur une table, avec plusieurs options simples à activer. Postgresql propose aussi ces fonctionnalités et reste aussi souple et configurable qu’Oracle. MySQL ne semble pas fournir cette option mais peut tout à fait être implémenté via des procédures stockées ou des triggers où les informations seront sauvées dans une table.

Type de données
Oracle, MySQL et Postgresql supportent la plupart des champs comme les données textes jusqu’à 4GB. Par contre, contrairement à Oracle, Postgresql et MySQL supportent le type de données "SET" (ensemble particulier de valeurs) qui reste très pratique à l’usage. Une autre caractéristique très apprécié sur Postdresql et MySQL est la large variété de champs numériques : du smallint au décimal, real, double et bien d’autres.

Support transactionnel
MySQL embarque depuis bien longtemps un moteur transactionnel dont InnoDB qu’Oracle avait racheté. Cependant, l’auteur souligne les faibles performances des opérations transactionnelles lorsque la majorité des demandes seraient la consultation de données. En effet, je rappelle que le moteur InnoDB reste performant pour des opérations de lecture/écriture mais beaucoup moins si on souhaite privilégier la lecture.

Conclusion
Il y a beaucoup de paramètres à considérer dans le choix d’une base de données : support de l’éditeur et de la communauté, performance, possibilité d’optimisation et bien sûr le rapport coût/robustesse.

Retrouver l'article complet : Database journal
Retrouver la partie 1

Octobre 2007 – PHP Index: Packtpub CMS Open Source Award

Packtpub (http://packtpub.com/award) a livré son verdict pour le concours des CMS Open Source 2007 (Meilleur CMS,
toutes catégories confondues)

Joomla! finit premier devant Drupal et e107.

http://joomla.org/
http://drupal.org/
http://e107.org


Joomla devrait avoir une nouvelle version d'ici peu, puisque'une version 1.5 RC3 est
sorti au début du mois d'octobre

Drupal 4.7.8 et 5.3 viennent d'être réalisés.

En ce qui concerne e107, une nouvelle version (0.7.10) vient également de sortir...

Les CMS PHP open Source se portent donc pour le mieux...


D'autres catégories peuvent vous intéresser également, comme les projets non basés sur le
couple PHP/mySQL ou les jeunes CMS plein d'avenir...

Proposé par Lolo Irie

Octobre 2007 – Prendre un Café: Forum PHP 2007

Juste un petit mot pour vous informer que le Forum PHP 2007 se tiendra les 21 et 22 novembre prochains à Paris dans le 7ème arrondissement.

Au programme, quelques invités prestigieux comme Rasmus Lerdorf et Andrei Zmievski mais aussi un programme de conférences alléchant :

  • Clients riches avec PHP : L'exemple de Flex
  • Optimistations, méthodes, sécurité : retours d'expérience dans les grands comptes
  • Les nouveautés de PHP6
  • Comment Facebook tient la charge avec APC
  • Sécurité : MySQL et PHP sous surveillance

Côté Symfony, Fabien Potencier animera une session sur la simplification du développement des interfaces aux bases de données.

Bref, un événement d'importance dans le petit monde de PHP, venez nombreux :)

Octobre 2007 – PHP Québec: Résumé de l'Assemblée Générale et Élections 2007-2008

27 octobre 2007

Assemblée générale - Montréal, Pub 100 Génies

Présents (membres)
- Anna Filina
- Sylvain Mathon
- Frédéric Lebel
- Andrew Da Silva
- Michel Belleau
- Yann Larrivée
- Sylvain Lévesque
- Sylvain Racine

Observateurs
- Louis-Philippe Huberdeau

Ouverture de la session:13h40
* Présentation des finances: déficit temporaire
* Fusion
- rareté du personnel
- simplification des finances
* Postes à combler et candidats
- Yann Larrivée: responsable des évènements spéciaux
- Sylvain Mathon: trésorier
- Frédéric Lebel: responsable TI
- Sylvain Lévesque: président
- Michel Belleau: responsable du groupe de Québec
- Postes vacants: secrétaire, responsable de Montréal
- Présentation des postes
* Vote et dépouillement des votes
- Président: Sylvain Lévesque (pas d'objections)
- Trésorier: Sylvain Mathon (pas d'objections)
- Secrétaire: Sylvain Racine (pas d'objections)
- Responsable d'évènements : Yann Larrivée (pas d'objections)
- Responsable du groupe de Montréal: Louis-Philippe Huberdeau (pas
d'objections)
- Responsable du groupe de Québec: Michel Belleau (pas d'objections)
- Responsable des technologies de l'information: Frédéric Lebel (pas
d'objections)
- Secrétaire du groupe de Montréal: Anna Filina (pas d'objections)

Fermeture de la session: 14h53

Anna Filina