<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Frato blog &#187; PHP</title>
	<atom:link href="http://www.lecentre.net/fratoblog/category/1/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lecentre.net/fratoblog</link>
	<description>PHP, css, webdesign... et le reste</description>
	<lastBuildDate>Tue, 31 Jan 2012 13:40:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sécuriser un formulaire sans captcha</title>
		<link>http://www.lecentre.net/fratoblog/2010/02/securiser-un-formulaire-sans-captcha/</link>
		<comments>http://www.lecentre.net/fratoblog/2010/02/securiser-un-formulaire-sans-captcha/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 16:19:50 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[formulaire]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=246</guid>
		<description><![CDATA[Eternel problème du développeur web, sécuriser les formulaires qui se trouvent sur un site pour empêcher les robots de soumettrent des formulaires de spam. Jusqu&#8217;à aujourd&#8217;hui, deux solutions s&#8217;offrent à nous pour bloquer ces robots : Utiliser un captcha Utiliser les services d&#8217;un filtre antispam, genre Akismet Je suis personnellement totalement contre les captcha, qui ...]]></description>
			<content:encoded><![CDATA[<p>Eternel problème du développeur web, sécuriser les formulaires qui se trouvent sur un site pour empêcher les robots de soumettrent des formulaires de spam. Jusqu&#8217;à aujourd&#8217;hui, deux solutions s&#8217;offrent à nous pour bloquer ces robots :</p>
<ul>
<li>Utiliser un captcha</li>
<li>Utiliser les services d&#8217;un filtre antispam, genre <a href="http://akismet.com">Akismet</a></li>
</ul>
<p>Je suis personnellement totalement contre les captcha, qui compliquent beaucoup trop la saisie d&#8217;un formulaire, qui se doit d&#8217;être simple si on veut que le visiteur le remplisse et l&#8217;envoi. Les captcha affichent des images de plus en plus compliquées, au point que même un être humain a du mal à identifier les lettres qu&#8217;il est censé recopier.<br />
Pour les filtres anti-spam, je n&#8217;ai pas pris le temps de tester, peut être est-ce efficace, mais cela fait reposer le bon fonctionnement de votre formulaire sur un service tiers, et ajoute donc des potentialités de pannes.</p>
<p>La solution que j&#8217;utilise était jusqu&#8217;à présent composée d&#8217;une double protection, qui s&#8217;est avérée insuffisante, je viens donc d&#8217;en ajouter une troisième.</p>
<p><strong>1. Contrôler les champs renvoyés par le formulaire :</strong></p>
<p>Il arrive que les robots ajoutent des champs au formulaire qu&#8217;ils renvoient. La solution consiste donc à ne traiter que les formulaires qui ne contiennent que les champs que nous avons défini.<br />
Pour l&#8217;exemple, utilisons un formulaire de contact ou l&#8217;utilisateur entre son nom, son mail et un message. Le formulaire retournera donc 4 résultats : nom, mail, message, ainsi que la valeur du bouton submit (si le formulaire est envoyé avec un champ input submit et pas un lien).</p>
<p>En php, on définit une liste de champs acceptés :</p>
<pre class="brush: php; title: ; notranslate">
$whitelist = array('nom', 'mail', 'message', 'envoyer');
</pre>
<p>Lors de la soumission du formulaire, on contrôle ce qui est retourné :</p>
<pre class="brush: php; title: ; notranslate">
if(checkWhitelist($whitelist))
{
     // Traitment du formulaire
}
</pre>
<p>La fonction checkWhitelist retourne false s&#8217;il trouve un champ qui ne figure pas dans la whitelist</p>
<pre class="brush: php; title: ; notranslate">
function checkWhitelist ($list)
{
	foreach ($_POST as $key =&gt; $item)
	{
		if (!in_array($key, $list))
		{
			return false;
		}
	}

	return true;
}
</pre>
<p><strong>2. Placer un token en session</strong></p>
<p>De nombreux robots ne sont pas capable de gérer des cookies. La solution consiste donc à placer un nombre aléatoire dans un champ caché du formulaire, et à stocker ce nombre en session. Une fois que le formulaire est retourné, on vérifie que le nombre retourné par le formulaire est identique au nombre stocké en session. Les robots ne gérant pas les sessions ne retourneront rien, et du coup le formulaire ne sera pas traité.</p>
<p>Au chargement de la page, on génère un token (le paramètre de la fonction est le nom du formulaire) :</p>
<pre class="brush: php; title: ; notranslate">
$token = generateFormToken('contact_form');
</pre>
<p>La fonction generateFormToken génère un nombre aléatoire, le stock en session, et le retourne.</p>
<pre class="brush: php; title: ; notranslate">
function generateFormToken($form)
{
    $token = md5(uniqid(microtime(), true));
    $_SESSION[$form.'_token'] = $token;
    return $token;
}
</pre>
<p>On place ensuite ce token dans un champ caché du formulaire :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;input type=&quot;hidden&quot; name=&quot;token&quot; value=&quot;&lt;?php echo $token; ?&gt;&quot; /&gt;
</pre>
<p>Lorsque le formulaire est retourné, on vérifie le token :</p>
<pre class="brush: php; title: ; notranslate">
if(verifyFormToken('contact_form'))
{
    // Traitement du formulaire
}
</pre>
<p>Fonction verifyFormToken :</p>
<pre class="brush: php; title: ; notranslate">
function verifyFormToken($form)
{
    if (!isset($_SESSION[$form.'_token']))
    {
        return false;
    }

    if (!isset($_POST['token']))
    {
        return false;
    }

    if ($_SESSION[$form.'_token'] !== $_POST['token'])
    {
        return false;
    }

    return true;
}
</pre>
<p><strong>3. Changer le contenu d&#8217;un champ caché en javascript</strong></p>
<p>Les robots ne remplissent pas les formulaires, ils se contentent d&#8217;envoyer directement le contenu du formulaire à l&#8217;adresse définie. La troisième solution consiste donc à placer un champ caché dans le formulaire, avec une valeur de 0 (ou autre), et de changer la valeur de ce champ lorsque l&#8217;utilisateur saisie son nom (ou autre).</p>
<p>A l&#8217;aide de Jquery, on attache une action qui sera déclenchée dès que l&#8217;utilisateur placera son curseur dans le champ nom. Cette action va modifier la valeur de notre champ caché (appellé ici &laquo;&nbsp;control&nbsp;&raquo;) :</p>
<pre class="brush: jscript; title: ; notranslate">
$(function(){
	$('#nom').bind('focus', function(){
		$(&quot;#control&quot;).val('666');
	})
});
</pre>
<p>Lorsque le formulaire est renvoyé, on vérifie que le champ control a bien la valeur 666 :</p>
<pre class="brush: php; title: ; notranslate">
if($_POST['control'] == 666)
{
    // Traitement du formulaire
}
</pre>
<p>Pour résumer, voici le script en entier :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?php
	session_start();

	function generateFormToken($form)
	{

	    $token = md5(uniqid(microtime(), true));
		$_SESSION[$form.'_token'] = $token;
	   	return $token;
	}

	function verifyFormToken($form)
	{

	    if (!isset($_SESSION[$form.'_token']))
		{
			return false;
	    }

		if (!isset($_POST['token']))
		{
			return false;
	    }

		if ($_SESSION[$form.'_token'] !== $_POST['token'])
		{
			return false;
	    }

		return true;
	}

	function checkWhitelist ($list)
	{
		foreach ($_POST as $key =&gt; $item)
		{
			if (!in_array($key, $list))
			{
				return false;
			}
		}

		return true;
	}

	$whitelist = array('nom', 'mail', 'message', 'envoyer', 'control', 'token');

	if(isset($_POST['nom']) &amp;&amp; verifyFormToken('contact_form') &amp;&amp; checkWhitelist($whitelist) &amp;&amp; $_POST['control'] == 666)
	{
		// Traitement du formulaire
	}

	$token = generateFormToken('contact_form');
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
	&lt;title&gt;&lt;/title&gt;
	&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
		$(function(){
			$('#mail').bind('focus', function(){
				$(&quot;#control&quot;).val('666');
			});
		});
	&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;form action=&quot;&quot; method=&quot;post&quot; name=&quot;contact_form&quot;&gt;
		&lt;label for=&quot;nom&quot;&gt;Nom&lt;/label&gt;
		&lt;input type=&quot;text&quot; name=&quot;nom&quot; id=&quot;nom&quot; /&gt;
		&lt;label for=&quot;mail&quot;&gt;Mail&lt;/label&gt;
		&lt;input type=&quot;text&quot; name=&quot;mail&quot; id=&quot;mail&quot; /&gt;
		&lt;label for=&quot;message&quot;&gt;Message&lt;/label&gt;
		&lt;textarea name=&quot;message&quot;&gt;&lt;/textarea&gt;
		&lt;input type=&quot;hidden&quot; name=&quot;control&quot; id=&quot;control&quot; value=&quot;0&quot; /&gt;
		&lt;input type=&quot;hidden&quot; name=&quot;token&quot; value=&quot;&lt;?php echo $token; ?&gt;&quot; /&gt;
		&lt;input type=&quot;submit&quot; name=&quot;envoyer&quot; value=&quot;Envoyer&quot;
	&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>J&#8217;utilise cette solution depuis quelques temps, elle semble efficace. Concernant les deux premières techniques, je les ai trouvé sur un site anglais, mais pas moyen de retrouver l&#8217;adresse de ce site ; je l&#8217;ajouterai si je la retrouve. Pour la troisième technique, elle pose un problème si le visiteur du site a désactivé le javascript sur son navigateur. A vous de voir si cela est acceptable ou pas.</p>
<p>Si vous utilisez une autre technique, qui soit simple et efficace, n&#8217;hésitez pas à en faire part dans les commentaires.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2010/02/securiser-un-formulaire-sans-captcha/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Comparateur de fichier (diff tool) sur mac</title>
		<link>http://www.lecentre.net/fratoblog/2009/04/comparateur-de-fichier-diff-tool-sur-mac/</link>
		<comments>http://www.lecentre.net/fratoblog/2009/04/comparateur-de-fichier-diff-tool-sur-mac/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 07:46:42 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=182</guid>
		<description><![CDATA[Changes vous permet de comparer vos fichiers et vos dossiers pour trouver rapidement les différences. L&#8217;interface est très intuitive, et l&#8217;application peut être intégrée sous forme de plug-in dans la plupart des éditeurs de texte (Textmate, Coda, BBEdit, Espresso, &#8230;). Il permet de travailler sur des fichiers locaux, ainsi qu&#8217;avec les système de versionning (Subversion, ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://changesapp.com"><img src="http://www.lecentre.net/fratoblog/wp-content/uploads/2009/04/dircomp.png" alt="" title="dircomp" width="450" height="244" class="aligncenter size-full wp-image-183" /></a><a href="http://changesapp.com">Changes</a> vous permet de comparer vos fichiers et vos dossiers pour trouver rapidement les différences. L&#8217;interface est très intuitive, et l&#8217;application peut être intégrée sous forme de plug-in dans la plupart des éditeurs de texte (Textmate, Coda, BBEdit, Espresso, &#8230;). Il permet de travailler sur des fichiers locaux, ainsi qu&#8217;avec les système de versionning (Subversion, CVS, Git, &#8230;).</p>
<p>J&#8217;ai découvert ce soft via <a href="http://daringfireball.net/linked/2009/03/31/changes-15">Daring Fireball</a>, qui propose un <strong>coupon de réduction de 10 $</strong> pour le logiciel, jusqu&#8217;au 15 avril.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/w86wRYRPBrI&#038;rel=0&#038;color1=0x2b405b&#038;color2=0x6b8ab6&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/w86wRYRPBrI&#038;rel=0&#038;color1=0x2b405b&#038;color2=0x6b8ab6&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>[ad#posts]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2009/04/comparateur-de-fichier-diff-tool-sur-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bespin, éditeur de texte en ligne</title>
		<link>http://www.lecentre.net/fratoblog/2009/02/bespin-editeur-de-texte-en-ligne/</link>
		<comments>http://www.lecentre.net/fratoblog/2009/02/bespin-editeur-de-texte-en-ligne/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 07:46:10 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=125</guid>
		<description><![CDATA[Bespin est un éditeur de texte en ligne, issu du Mozilla Lab. Utilisant Canvas, il permet d&#8217;éditer vos fichiers html, js, &#8230; en ligne. Après un petit test rapide, l&#8217;outil semble rapide et efficace. Il dispose d&#8217;une ligne de commande permettant d&#8217;utiliser des fonctions (remplacer du texte avec des regex, trim, &#8230;). Pour le tester, ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://bespin.mozilla.com/"><img src="http://www.lecentre.net/fratoblog/wp-content/uploads/2009/02/bespin_editor.png" alt="" title="bespin_editor" width="500" height="375" class="aligncenter size-full wp-image-126" /></a><br />
<a href="http://bespin.mozilla.com/">Bespin</a> est un éditeur de texte en ligne, issu du Mozilla Lab. Utilisant Canvas, il permet d&#8217;éditer vos fichiers html, js, &#8230; en ligne. Après un petit test rapide, l&#8217;outil semble rapide et efficace. Il dispose d&#8217;une ligne de commande permettant d&#8217;utiliser des fonctions (remplacer du texte avec des regex, trim, &#8230;).<br />
Pour le tester, il faut utiliser un navigateur supportant Canvas, et les fonctions avancées de Canvas, donc Firefox 3 ou une nightly de Safari.</p>
<p><object width="480" height="270"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3195079&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3195079&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="270"></embed></object><br /><a href="http://vimeo.com/3195079">Introducing Bespin</a> from <a href="http://vimeo.com/dion">Dion Almaer</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Plus de détail sur l&#8217;annonce de Bespin sur <a href="http://ajaxian.com/archives/bespin-a-new-mozilla-labs-experimental-extensible-code-editor-using-canvas">Ajaxian</a>.</p>
<p>[ad#posts]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2009/02/bespin-editeur-de-texte-en-ligne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personnaliser l&#8217;affichage des carte Google Map</title>
		<link>http://www.lecentre.net/fratoblog/2009/02/personnaliser-laffichage-des-carte-google-map/</link>
		<comments>http://www.lecentre.net/fratoblog/2009/02/personnaliser-laffichage-des-carte-google-map/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 09:42:17 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=119</guid>
		<description><![CDATA[Andreas Gohr présente comment personnaliser une carte Google Map, pour générer une carte de pirate. Il utilise la librairie GD, ainsi qu&#8217;une classe qu&#8217;il a développé pour récupérer une carte depuis Google Map et la personnaliser, en appliquant des effets sur la carte et en ajoutant par dessus des photos, des marqueurs, etc. Une idée ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.splitbrain.org/blog/2009-02/01-a_pirate_map_with_libgd_and_google_maps"><img src="http://www.lecentre.net/fratoblog/wp-content/uploads/2009/02/e553f91dd5df40fdee77eacd33039201media500x357.png" alt="" title="custom_google_map" width="500" height="357" class="aligncenter size-full wp-image-120" /></a><br />
<a href="http://www.splitbrain.org/blog/2009-02/01-a_pirate_map_with_libgd_and_google_maps">Andreas Gohr</a> présente comment <a href="http://www.splitbrain.org/blog/2009-02/01-a_pirate_map_with_libgd_and_google_maps">personnaliser une carte Google Map</a>, pour générer une carte de pirate. Il utilise la librairie GD, ainsi qu&#8217;une classe qu&#8217;il a développé pour récupérer une carte depuis Google Map et la personnaliser, en appliquant des effets sur la carte et en ajoutant par dessus des photos, des marqueurs, etc. Une idée intéressante pour customiser un peu les cartes affichées sur un site.</p>
<p>[ad#posts]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2009/02/personnaliser-laffichage-des-carte-google-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stream d&#8217;un fichier pdf généré à la volée et page blanche avec IE</title>
		<link>http://www.lecentre.net/fratoblog/2006/10/stream-dun-fichier-pdf-genere-a-la-volee-et-page-blanche-avec-ie/</link>
		<comments>http://www.lecentre.net/fratoblog/2006/10/stream-dun-fichier-pdf-genere-a-la-volee-et-page-blanche-avec-ie/#comments</comments>
		<pubDate>Wed, 18 Oct 2006 06:58:21 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=33</guid>
		<description><![CDATA[De plus en plus de site web ont recours à la génération de pdf à la volée, que ce soit pour permettre au visiteur de sauvegarder une page d&#8217;un site, ou pour générer divers documents (facture, fiche produit, formulaire personnalisé, &#8230;). J&#8217;utilise ce système sur de nombreux sites, et je viens de découvrir un problème ...]]></description>
			<content:encoded><![CDATA[<p>De plus en plus de site web ont recours à la génération de pdf à la volée, que ce soit pour permettre au visiteur de sauvegarder une page d&#8217;un site, ou pour générer divers documents (facture, fiche produit, formulaire personnalisé, &#8230;).<br />
J&#8217;utilise ce système sur de nombreux sites, et je viens de découvrir un problème survenant avec IE sur pc. Sur certains sites en effet, plutôt que d&#8217;afficher le pdf généré et renvoyé au navigateur par le serveur, IE affiche une page blanche.<br />
Après investigation, il apparaît que le problème survient si le serveur est configuré pour envoyer les pages au navigateur en les compressant en gzip. La compression semble perturber IE. Même si le serveur n&#8217;est configuré que pour compresser les pages html et php par exemple, puisque la génération du pdf se fait par l&#8217;appel d&#8217;une page php, le flux de retour est compressé en gzip, et modifier le header retourné par le serveur n&#8217;y change rien.<br />
La solution à ce problème est soit de générer automatiquement le pdf, puis de mettre un lien pointant directement sur le fichier pdf (dans ce cas le flux de réponse ne sera pas compressé puisqu&#8217;on appelle un fichier pdf), soit, plus radical, supprimer la compression gzip pour les pages à destination d&#8217;IE. La premiére solution n&#8217;est pas toujours possible, la deuxième est un peu extrême à mon gout. Si vous connaissez une autre technique, je suis preneur.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2006/10/stream-dun-fichier-pdf-genere-a-la-volee-et-page-blanche-avec-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinBinder, transformez vos scripts PHP en applications natives pour Windows</title>
		<link>http://www.lecentre.net/fratoblog/2006/04/winbinder-transformez-vos-scripts-php-en-applications-natives-pour-windows/</link>
		<comments>http://www.lecentre.net/fratoblog/2006/04/winbinder-transformez-vos-scripts-php-en-applications-natives-pour-windows/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 06:52:06 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=27</guid>
		<description><![CDATA[WinBinder est une nouvelle extension open source qui permet de transformer vos scripts PHP en applications pour Windows. La transformation semble assez facile Ã  voir les exemples sur le site. Jusqu&#8217;ici, la meilleure solution pour distribuer des applications PHP me semblait Ãªtre ZazouMiniWebServer, mais WinBinder, permettant de distribuer de vÃ©ritables applications, semble encore mieux.]]></description>
			<content:encoded><![CDATA[<p><a href="http://hypervisual.com/winbinder/">WinBinder</a> est une nouvelle extension open source qui permet de transformer vos scripts PHP en applications pour Windows. La transformation semble assez facile Ã  voir les exemples sur le site. Jusqu&#8217;ici, la meilleure solution pour distribuer des applications PHP me semblait Ãªtre <a href="http://www.xgarreau.org/zazouminiwebserver/">ZazouMiniWebServer</a>, mais WinBinder, permettant de distribuer de vÃ©ritables applications, semble encore mieux.</p>
<p><img src="http://www.lecentre.net/fratoblog/wp-content/winbinder.png" width="320" height="240" alt="Exemple WinBinder" title="Exemple WinBinder" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2006/04/winbinder-transformez-vos-scripts-php-en-applications-natives-pour-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveau webmail PHP, XHTML et CSS</title>
		<link>http://www.lecentre.net/fratoblog/2005/10/nouveau-webmail-php-xhtml-et-css/</link>
		<comments>http://www.lecentre.net/fratoblog/2005/10/nouveau-webmail-php-xhtml-et-css/#comments</comments>
		<pubDate>Wed, 12 Oct 2005 15:07:33 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=6</guid>
		<description><![CDATA[RoundCube est un nouveau webmail imap Ã©crit en PHP, entiÃ¨rement skinnable en CSS. Le projet en est au tout dÃ©but, mais il semble prometteur, et il propose dÃ©jÃ  une version utilisable. Le but est de simuler le comportement d&#8217;un lecteur de courrier classique (drag &#038; drop, rÃ¨gles de tri, fichier attachÃ©s, &#8230;), le tout implÃ©mentÃ© ...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.lecentre.net/fratoblog/wp-content/_webmail.jpg" width="400" height="323" alt="L'interface de RoundCube" title="L'interface de RoundCube" />RoundCube est un nouveau webmail imap Ã©crit en PHP, entiÃ¨rement skinnable en CSS. Le projet en est au tout dÃ©but, mais il semble prometteur, et il propose dÃ©jÃ  une version utilisable. Le but est de simuler le comportement d&#8217;un lecteur de courrier classique (drag &#038; drop, rÃ¨gles de tri, fichier attachÃ©s, &#8230;), le tout implÃ©mentÃ© avec les derniÃ¨res technologies web (CSS2, javascript, DOM, XMLHttpRequest). A suivre&#8230;</p>
<p><a href="http://roundcubemail.sourceforge.net/">Le site de RoundCube >></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2005/10/nouveau-webmail-php-xhtml-et-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recherche testeurs pour module PHP 5 sous OS X</title>
		<link>http://www.lecentre.net/fratoblog/2005/10/recherche-testeurs-pour-module-php-5-sous-os-x/</link>
		<comments>http://www.lecentre.net/fratoblog/2005/10/recherche-testeurs-pour-module-php-5-sous-os-x/#comments</comments>
		<pubDate>Tue, 11 Oct 2005 14:23:17 +0000</pubDate>
		<dc:creator>Frato</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lecentre.net/fratoblog/?p=5</guid>
		<description><![CDATA[Marc Liyanage met Ã  jour ses packages pour OS X (PHP, Postgre, MySql, &#8230;) et recherche des testeurs pour son premier package, PHP 5.0.5. http://www.entropy.ch/phpbb2/viewtopic.php?p=7928]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.entropy.ch/home/">Marc Liyanage</a></strong> met Ã  jour ses packages pour OS X (PHP, Postgre, MySql, &#8230;) et recherche des testeurs pour son premier package, PHP 5.0.5.</p>
<p><a href="http://www.entropy.ch/phpbb2/viewtopic.php?p=7928">http://www.entropy.ch/phpbb2/viewtopic.php?p=7928</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lecentre.net/fratoblog/2005/10/recherche-testeurs-pour-module-php-5-sous-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

