<?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>Itanea le Blog &#187; php</title>
	<atom:link href="http://www.itanea.com/blog/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.itanea.com/blog</link>
	<description>Techno, Développement, Entreprendre et au-delà !</description>
	<lastBuildDate>Thu, 18 Feb 2010 22:33:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>JpGraph 3.0.4 disponible aujourd&#8217;hui</title>
		<link>http://www.itanea.com/blog/2009/09/29/jpgraph-3-0-4-disponible-aujourdhui/</link>
		<comments>http://www.itanea.com/blog/2009/09/29/jpgraph-3-0-4-disponible-aujourdhui/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 20:02:53 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[jpgraph]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/2009/09/29/jpgraph-3-0-4-disponible-aujourdhui/</guid>
		<description><![CDATA[La librairie graphique JpGraph sort une release mineure (correction de bugs). Elle est disponible sur le serveur officiel. La liste des modifications. Related Posts:Zend Framework : version 1.7.3 disponibleLe Zend Framework passe en version 1.7.2Nouvelle version Zend Framework 1.7.5Nouvelle version Zend Framework 1.7.4L&#039;actu d&#039;octobre 2008Powered by Contextual Related Posts]]></description>
			<content:encoded><![CDATA[<p>La librairie graphique JpGraph sort une release mineure (correction de bugs). Elle est disponible sur le <a href="http://www.aditus.nu/jpgraph/jpdownload.php">serveur officiel</a>.</p>
<p>La <a href="http://www.aditus.nu/jpgraph/changes.php">liste des modifications</a>.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2009/01/27/zend-framework-version-173-disponible/" rel="bookmark" class="crp_title">Zend Framework : version 1.7.3 disponible</a></li><li><a href="http://www.itanea.com/blog/2008/12/27/le-zend-framework-passe-en-version-1-72/" rel="bookmark" class="crp_title">Le Zend Framework passe en version 1.7.2</a></li><li><a href="http://www.itanea.com/blog/2009/02/20/nouvelle-version-zend-framework-175/" rel="bookmark" class="crp_title">Nouvelle version Zend Framework 1.7.5</a></li><li><a href="http://www.itanea.com/blog/2009/02/06/nouvelle-version-zend-framework-174/" rel="bookmark" class="crp_title">Nouvelle version Zend Framework 1.7.4</a></li><li><a href="http://www.itanea.com/blog/2008/10/14/actu-octobre-2008/" rel="bookmark" class="crp_title">L&#039;actu d&#039;octobre 2008</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2009/09/29/jpgraph-3-0-4-disponible-aujourdhui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel : Bien configurer wamp pour développer en local</title>
		<link>http://www.itanea.com/blog/2008/08/11/tutoriel-bien-configurer-wamp-pour-developper-en-local/</link>
		<comments>http://www.itanea.com/blog/2008/08/11/tutoriel-bien-configurer-wamp-pour-developper-en-local/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 11:14:32 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[développer]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[httpd-vhosts.conf]]></category>
		<category><![CDATA[httpd.conf]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[wamp]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/?p=297</guid>
		<description><![CDATA[Introduction à WAMP pour les Nuls (car nous l&#8217;avons tous été un jour , ce n&#8217;est donc pas péjoratif ) WAMP c&#8217;est quoi ? WAMP est un package contenant tout ce qu&#8217;il vous sera nécessaire ou presque pour développer un site PHP/MySQL en local sur votre poste de travail. En clair, vous n&#8217;avez pas besoin [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction à WAMP pour les Nuls</h2>
<p><em>(car nous l&#8217;avons tous été un jour <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , ce n&#8217;est donc pas péjoratif )</em></p>
<p>WAMP c&#8217;est quoi ? WAMP est un package contenant tout ce qu&#8217;il vous sera nécessaire ou presque pour développer un site PHP/MySQL en local sur votre poste de travail. En clair, vous n&#8217;avez pas besoin d&#8217;avoir un hébergement sur internet (gratuit ou payant) pour développer vos sites. <strong>WAMP</strong> est l&#8217;acronyme pour Windows, <a title="Site officiel du serveur Apache" href="http://httpd.apache.org/" target="_blank">Apache</a>, <a title="La base de données open source MySQL" href="http://www-fr.mysql.com/" target="_blank">Mysql</a>, <a title="Le site officiel de PHP" href="http://www.php.net/" target="_blank">PHP </a>et il est le pendant de LAMP (pour les plateformes Linux) et MAMP (pour les plateformes Mac).</p>
<h2>Installer WAMP</h2>
<p>Vous pourrez trouvez tout le nécessaire à l&#8217;installation (Installeur &amp; Documentation) sur le <a title="Le site officiel de WAMP" href="http://www.wampserver.com/" target="_blank">site officiel de WAMP</a>.</p>
<h2>Configurer WAMP pour le développement local</h2>
<p>Une fois que vous avez <a title="Installer et démarrer WAMP" href="http://www.wampserver.com/presentation.php" target="_blank">installé et démarré WAMP</a>, vous pouvez consulter les sites que vous allez créer en tapant dans la barre d&#8217;url de votre navigateur favori : http://localhost/nouveausite/. Cela marche parfaitement. Mais&#8230;</p>
<p>Vous pouvez préférer avoir des urls qui ressemblent plus à ce que vous voyez au quotidien en naviguant sur le web, idéalement vous souhaiteriez quelquechose comme : http://nouveausite.local/.</p>
<p>Nous allons voir à présent comment faire. Ce n&#8217;est pas bien compliqué. Suivez le guide&#8230;</p>
<p><span id="more-297"></span></p>
<p>Deux étapes seront nécessaires :</p>
<ol>
<li>Modifier la configuration apache de WAMP (httpd.conf &amp; httpd-vhosts.conf)</li>
<li>Modifier votre fichier hosts de Windows (C:\WINDOWS\system32\drivers\etc\hosts)</li>
</ol>
<h3>Etape 1 : modifier la configuration apache de WAMP</h3>
<p>Nous allons tout d&#8217;abord modifier le fichier <strong>httpd-vhosts.conf</strong>, situé dans l&#8217;arborescence suivante : C:\wamp\bin\apache\apache2.2.8\conf\extra\httpd-vhosts.conf</p>
<p>Vous trouverez deux exemples de configuration dans ce fichier, nous allons fortement nous en inspirer pour réaliser notre propre configuration :</p>
<p><code>&lt;VirtualHost *:80&gt;<br />
ServerAdmin webmaster@dummy-host.localhost (&lt;-- à vous de voir si cela présente un intérêt de changer cette adresse)<br />
DocumentRoot "C:/wamp/www/<strong>nouveausite/www/</strong>"<br />
ServerName <strong>nouveausite.local</strong><br />
ServerAlias <strong>nouveausite.local</strong><br />
ErrorLog "logs/<strong>nouveausite.local</strong>-error.log" (pour consulter les erreurs, souvent pratique)<br />
CustomLog "logs/<strong>nouveausite.local</strong>-access.log" common<br />
&lt;/VirtualHost&gt;</code></p>
<p>Vous voyez rien de bien compliqué <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .<br />
Enregistrez et fermer le fichier.</p>
<p><em>Nota : Pour vous assurer que vous avez bien respecter la syntaxe et que tout est bien configuré, vous pouvez faire appel à la commande httpd.exe -S qui vérifiera pour vous la syntaxe de votre fichier Virtual Host. Vous trouverez l&#8217;exécutable dans l&#8217;arborescence suivante : C:\wamp\bin\apache\apache2.2.8\bin\httpd.exe.</em></p>
<p>Nous allons à présent modifier le fichier de configuration principal d&#8217;Apache : <strong>httpd.conf</strong>. Vous le trouverez à l&#8217;arborescence suivante : C:\wamp\bin\apache\apache2.2.8\conf\httpd.conf</p>
<p>Ouvrez le fichier et allez tout à la fin. Vous trouverez dans les dernières lignes du fichier, la ligne suivante :</p>
<p><code>#Include conf/extra/httpd-vhosts.conf</code></p>
<p>supprimez simplement le symbole # qui sert de marqueur de commentaire. Enregistrez et fermez le fichier.</p>
<p>A présent, nous allons redémarrer WAMP. Pour cela, un clic sur l&#8217;icône dans la barre des taches (près de l&#8217;horloge Windows en bas à droite, le logo de WAMP ressemble à un compte tour). Un menu s&#8217;affiche, cliquez sur &#8216;<strong>Restart All Services</strong>&#8216;  pour les plus anglophones d&#8217;entre vous ou si vous n&#8217;avez pas changé la langue par défaut de l&#8217;interface de WAMP (pour ce faire : clic droit sur l&#8217;icône de WAMP &gt; Language &gt; French), &#8216;<strong>Redémarrer les services</strong>&#8216; pour les frenchies.</p>
<p>Si tout se passe bien, le &#8216;compte tour&#8217; passera pas le rouge, le jaune et finalement le blanc. Si vous êtes arrivés jusque là sans encombre, nous allons finaliser notre configuration en passant à l&#8217;étape 2.</p>
<h3>Etape 2 : modifier le fichier hosts de Windows</h3>
<p>Le fichier &#8216;<strong>hosts</strong>&#8216; c&#8217;est quoi ? Je vous livre ci-après la <a title="Définition officielle de hosts sur wikipedia" href="http://fr.wikipedia.org/wiki/Hosts" target="_blank">définition officielle de Wikipedia de hosts</a> :</p>
<blockquote><p>Le fichier <strong>hosts</strong> est un <a class="mw-redirect" title="Fichier (informatique)" href="http://fr.wikipedia.org/wiki/Fichier_%28informatique%29">fichier</a> utilisé par le <a title="Système d'exploitation" href="http://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation">système d&#8217;exploitation</a> d&#8217;un <a title="Ordinateur" href="http://fr.wikipedia.org/wiki/Ordinateur">ordinateur</a> lors de l&#8217;accès à <a title="Internet" href="http://fr.wikipedia.org/wiki/Internet">Internet</a>. Il contient l&#8217;<a title="Adresse IP" href="http://fr.wikipedia.org/wiki/Adresse_IP">adresse IP</a> locale et, éventuellement, l&#8217;adresse de <a title="Serveur Web" href="http://fr.wikipedia.org/wiki/Serveur_Web">serveurs web</a>. Lors de l&#8217;accès à un périphérique réseau par <a title="Nom de domaine" href="http://fr.wikipedia.org/wiki/Nom_de_domaine">nom de domaine</a>, ce fichier est consulté avant l&#8217;accès au serveur <a title="Domain Name System" href="http://fr.wikipedia.org/wiki/Domain_Name_System">DNS</a> et permet au système de connaître l&#8217;adresse IP associée au nom de domaine. Cette technologie fut à l&#8217;origine mise au point pour <a class="mw-redirect" title="Arpanet" href="http://fr.wikipedia.org/wiki/Arpanet">Arpanet</a>, l&#8217;ancêtre d&#8217;Internet, mais devint insuffisante face à l&#8217;augmentation de la taille du réseau. Elle reste cependant utilisée pour les <a title="Réseau local" href="http://fr.wikipedia.org/wiki/R%C3%A9seau_local">réseaux locaux</a> de faible taille, ainsi que dans certains cas particuliers, par exemple pour le <a title="Filtrage d'Internet" href="http://fr.wikipedia.org/wiki/Filtrage_d%27Internet">filtrage web</a>.</p></blockquote>
<p>Nous allons donc grâce à ce fichier, dire à notre machine que pour l&#8217;url http://nouveausite.local/, il ne lui est pas nécessaire de consulter les serveurs DNS, puisque cette adresse sera associée à la boucle locale (localhost).</p>
<p>Ouvrons donc le fichier hosts : C:\WINDOWS\system32\drivers\etc\hosts</p>
<p>Et éditons la ligne :</p>
<p><code>127.0.0.1       localhost</code></p>
<p>pour la remplacer par :</p>
<p><code>127.0.0.1       localhost nouveausite.local</code></p>
<p>Enregistrez et fermez le fichier.</p>
<p>Voilà, c&#8217;est fait, vous venez de configurer votre serveur WAMP. Vous poiuvez le vérifier en tapant http://nouveausite.local/ dans votre navigateur. Pour peu, que vous ayez prévu le coup et mis en place le fameux &#8216;Hello World&#8217; dans C:\wamp\www\nouveausite\www\index.php, vous verrez apparaître &#8216;Hello World&#8217; dans votre navigateur.</p>
<h2>La home de WAMP est morte, vive la home de WAMP</h2>
<p>Et bien, notre petite manipulation a fait quelques dégâts collatéraux <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Rien de bien grave et surtout on peut y remédier. En effet, dorénavant, en lieu et place de http://localhost/ (précédemment la home page de WAMP), vous arrivez sur votre &#8216;nouveausite&#8217; (http://nouveausite.local/).</p>
<p>Pour remédier à cela, il suffira de créer un virtual host pour la home page de WAMP (exemple : http://home.local/) et de déclarer la ligne correspondante dans le fichier hosts. Je vous laisse mettre en place cette partie, cela fera office d&#8217;exercice pratique&#8230; <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Et maintenant, il ne reste plus qu&#8217;à développer. D&#8217;ailleurs j&#8217;y retourne <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2006/12/26/mise-en-place-de-symfony-sous-ubuntu/" rel="bookmark" class="crp_title">Mise en place de Symfony sous Ubuntu Edgy Eft</a></li><li><a href="http://www.itanea.com/blog/2007/06/18/tutoriel-installation-securisation-et-utilisation-de-xampp-sous-ubuntu/" rel="bookmark" class="crp_title">Tutoriel : Installation, sécurisation et utilisation de Xampp sous Ubuntu</a></li><li><a href="http://www.itanea.com/blog/2008/10/07/ses-logs-en-temps-reel-ou-tail-f-sous-windows/" rel="bookmark" class="crp_title">Ses logs en temps réel ou tail -f sous Windows</a></li><li><a href="http://www.itanea.com/blog/2007/03/14/pour-debuter-dans-la-veille-technologique/" rel="bookmark" class="crp_title">Pour débuter dans la veille technologique</a></li><li><a href="http://www.itanea.com/blog/2008/05/25/le-blog-d-itanea-change-d-adresse-pour-le-confort-de-ses-lecteurs/" rel="bookmark" class="crp_title">Le blog d&#039;Itanea change d&#039;adresse pour le confort de ses lecteurs</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2008/08/11/tutoriel-bien-configurer-wamp-pour-developper-en-local/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Framework PHP : sélection de livres</title>
		<link>http://www.itanea.com/blog/2008/07/01/framework-php-selection-de-livres/</link>
		<comments>http://www.itanea.com/blog/2008/07/01/framework-php-selection-de-livres/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 11:24:11 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[code igniter]]></category>
		<category><![CDATA[jelix]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/?p=283</guid>
		<description><![CDATA[Je parle régulièrement ici de frameworks PHP (Zend Framework, Symfony, Code Igniter, Jelix principalement), je vous ai donc concocté un sélection de livres sur le sujet avec un plus large choix sur le Zend Framework puisque c&#8217;est celui que j&#8217;utilise le plus régulièrement. Bonne lecture. Widgets Amazon.fr Related Posts:Avec Google Goggles et Google Translate, est [...]]]></description>
			<content:encoded><![CDATA[<p>Je parle régulièrement ici de frameworks PHP (Zend Framework, Symfony, Code Igniter, Jelix principalement), je vous ai donc concocté un sélection de livres sur le sujet avec un plus large choix sur le Zend Framework puisque c&#8217;est celui que j&#8217;utilise le plus régulièrement.</p>
<p>Bonne lecture.</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_fa4cdf0b-65a4-4e34-b54f-039aa0d3c62a"  WIDTH="600px" HEIGHT="200px"><param NAME="movie" VALUE="http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&#038;MarketPlace=FR&#038;ID=V20070822%2FFR%2Fitanewishl-21%2F8010%2Ffa4cdf0b-65a4-4e34-b54f-039aa0d3c62a&#038;Operation=GetDisplayTemplate"><param NAME="quality" VALUE="high"><param NAME="bgcolor" VALUE="#FFFFFF"><param NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&#038;MarketPlace=FR&#038;ID=V20070822%2FFR%2Fitanewishl-21%2F8010%2Ffa4cdf0b-65a4-4e34-b54f-039aa0d3c62a&#038;Operation=GetDisplayTemplate" id="Player_fa4cdf0b-65a4-4e34-b54f-039aa0d3c62a" quality="high" bgcolor="#ffffff" name="Player_fa4cdf0b-65a4-4e34-b54f-039aa0d3c62a" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="200px" width="600px"></embed></object> <noscript><a HREF="http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&#038;MarketPlace=FR&#038;ID=V20070822%2FFR%2Fitanewishl-21%2F8010%2Ffa4cdf0b-65a4-4e34-b54f-039aa0d3c62a&#038;Operation=NoScript">Widgets Amazon.fr</a></noscript></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2010/02/19/avec-google-goggles-et-google-translate-est-il-encore-besoin-d-etudier-les-langues/" rel="bookmark" class="crp_title">Avec Google Goggles et Google Translate, est il encore besoin d&#8217;étudier les langues ?</a></li><li><a href="http://www.itanea.com/blog/2007/02/07/ubuntips-personnaliser-son-bureau/" rel="bookmark" class="crp_title">UbunTips : Personnaliser son bureau</a></li><li><a href="http://www.itanea.com/blog/2007/02/11/firefox-relancer-les-dernieres-pages-visitees/" rel="bookmark" class="crp_title">Firefox : relancer les dernières pages visitées</a></li><li><a href="http://www.itanea.com/blog/2008/01/14/amazon-contre-attaque-le-syndicat-du-livre-francais-en-demandant-a-ses-clients-de-signer-une-petition-de-soutien/" rel="bookmark" class="crp_title">Amazon contre-attaque le Syndicat du Livre Français en demandant à ses clients de signer une pétition de soutien</a></li><li><a href="http://www.itanea.com/blog/2007/12/12/que-pensez-vous-de-la-remise-en-cause-de-la-gratuite-des-frais-de-livraison-pour-les-livres-achetes-en-ligne/" rel="bookmark" class="crp_title">Que pensez vous de la remise en cause de la gratuité des frais de livraison pour les livres achetés en ligne ?</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2008/07/01/framework-php-selection-de-livres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L&#039;actu de mai 2008</title>
		<link>http://www.itanea.com/blog/2008/05/05/l-actu-de-mai-2008/</link>
		<comments>http://www.itanea.com/blog/2008/05/05/l-actu-de-mai-2008/#comments</comments>
		<pubDate>Mon, 05 May 2008 12:02:23 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Nouvelles]]></category>
		<category><![CDATA[actu des mois précédents]]></category>
		<category><![CDATA[veille-technologique]]></category>
		<category><![CDATA[actu]]></category>
		<category><![CDATA[actu du mois]]></category>
		<category><![CDATA[alice]]></category>
		<category><![CDATA[asus]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[canal +]]></category>
		<category><![CDATA[canal + le bouquet]]></category>
		<category><![CDATA[comcast]]></category>
		<category><![CDATA[controle parental]]></category>
		<category><![CDATA[copix]]></category>
		<category><![CDATA[eeepc]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[firefox 3]]></category>
		<category><![CDATA[firefox 3 RC1]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[freebox]]></category>
		<category><![CDATA[gandi]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google friends connect]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[hébergement]]></category>
		<category><![CDATA[iliad]]></category>
		<category><![CDATA[jelix]]></category>
		<category><![CDATA[live messenger]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[netbook remix]]></category>
		<category><![CDATA[neuf]]></category>
		<category><![CDATA[numericable]]></category>
		<category><![CDATA[offre]]></category>
		<category><![CDATA[open office 2.4]]></category>
		<category><![CDATA[open office 3]]></category>
		<category><![CDATA[open social]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plaxo]]></category>
		<category><![CDATA[rachat]]></category>
		<category><![CDATA[rachat yahoo]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ultra-portable]]></category>
		<category><![CDATA[umpc]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.itanea.com/?p=254</guid>
		<description><![CDATA[L&#8217;actu du mois Seules les trois dernières news sont affichées, cliquez sur &#8216;Lire la suite&#8217;, pour toutes les news du mois. L&#8217;actu du mois en (quasi) temps réel, mise à jour au fil des news intéressantes. Ubuntu s&#8217;apprête t-il a envahir la marché des ultra-portables ? &#8211; 26 mai 2008 Mark Shuttleworth, le &#8216;papa&#8217; d&#8217;Ubuntu, [...]]]></description>
			<content:encoded><![CDATA[<h2>L&#8217;actu du mois</h2>
<p><span class="important">Seules les trois dernières news sont affichées, cliquez sur &#8216;Lire la suite&#8217;, pour toutes les news du mois.</span></p>
<p>L&#8217;<strong>actu</strong> du mois en <em>(quasi)</em> temps réel, mise à jour au fil des news intéressantes.</p>
<h3>Ubuntu s&#8217;apprête t-il a envahir la marché des ultra-portables ? &#8211; 26 mai 2008</h3>
<p>Mark Shuttleworth, le &#8216;papa&#8217; d&#8217;Ubuntu, annoncera début juin Netbook Remix qui sera une version d&#8217;Ubuntu adaptée pour fonctionner sur le segment des ultra-portables type Asus eeepc.</p>
<p><a href="http://www.vnunet.fr/fr/news/2008/05/26/netbook_remix_la_version_d_ubuntu_pour_les_pc_ultra_portable" target="_blank">Plus d&#8217;info ?</a></p>
<h3>Un nouveau coup de bélier de Microsoft à la porte de Yahoo &#8211; 26 mai 2008</h3>
<p>Microsoft ne semble pas encore prêt à jetter l&#8217;éponge sur le dossier Yahoo. Les actionnaires de Yahoo, cèderont ils à l&#8217;appel de plus en plus pressant du portefeuille ? A noter que de nombreux gros investisseurs achètent en masse ces derniers jours les titres Yahoo (pour une revente et donc un bénéfice très rapide ?).</p>
<p>Pendant, ce temps le conseil d&#8217;administration de Yahoo retarde la date de leur prochain conseil afin de mettre en place sa stratégie de défense. Serait ce le moment d&#8217;acheter du Yahoo ?</p>
<p class="download">Les articles en rapport :<br />
<em>Clubic : <a href="http://www.clubic.com/actualite-141246-microsoft-monter-34-racheter-yahoo.html" target="_blank">Microsot monte à 34$ pour racheter Yahoo</a><br />
Vnunet.fr : <a href="http://www.vnunet.fr/fr/news/2008/05/26/les_investisseurs_vautours_encerclent_yahoo" target="_blank">Les investisseurs vautours encerclent Yahoo</a></em></p>
<h3>Numéricable aurait un plus gros portefeuille que les autres prétendants ? &#8211; 22 mai 2008</h3>
<p>Appamment oui ! En effet, Numéricable serait prêt à faire un chèque de 780 M€ pour s&#8217;offrir la belle Alice, tant convoitée ! Free est le plus frileux avec &#8216;seulement&#8217; 600 M€ et Neuf se place en candidat intermédiaire avec une offre à 650 M€.  Reste maintenant une seule question, la belle succombera t-elle au plus gros chèque ?</p>
<p class="download">Les articles en rapport :<br />
<em>Clubic : <a href="http://www.clubic.com/actualite-140796-numericable-point-seduire-alice.html" target="_blank">Numéricable sur le point de séduire Alice</a><br />
Journal du Net : <a href="http://www.journaldunet.com/breve/27234/numericable-offrirait-la-plus-belle-dot-pour-alice.shtml" target="_blank">Numéricable offrirait la plus belle dot pour Alice</a></em></p>
<h3>Le réseau social Plaxo racheté par Comcast &#8211; 19 mai 2008</h3>
<p>Mai serait il le mois des rachats ? Apparemment oui&#8230; Comcast vient de s&#8217;offrir la startup pour un montant estimé entre 145 et 175 millions de dollars. <a href="http://www.vnunet.fr/fr/news/2008/05/19/comcast_s_incruste_dans_les_reseaux_sociaux_avec_le_rachat_de_plaxo" target="_blank">Pour en savoir plus</a> <span id="more-254"></span></p>
<h3>Sortie du Zend Framework en version 1.5.2 &#8211; 16 mai 2008</h3>
<p>Cette version corrige une cinquantaine de bug. A récupérer sur le site de Zend : <a href="http://framework.zend.com/download" target="_blank"> Télécharger la dernière version du Zend Framework</a> <a href="http://framework.zend.com/issues/secure/IssueNavigator.jspa?reset=true&amp;pid=10000&amp;fixfor=10181" target="_blank">Les bugs corrigés</a></p>
<h3>Du contrôle parental sous Live Messenger &#8211; 14 mai 2008</h3>
<p>Pouvoir s&#8217;assurer que ses enfants ne parlent pas avec de parfaits inconnus. Au vu de ce que l&#8217;on entend (souvent) aux journaux télévisés, je pense que cela va dans le bon sens.</p>
<ul>
<li><a href="http://www.windowslive.fr/controleparental/default.asp" target="_blank">Le contrôle parental sur le site Windows Live</a></li>
<li><a href="http://www.clubic.com/actualite-139640-windows-live-controle-parental-messenger.html" target="_blank">L&#8217;explication sur clubic.com</a></li>
</ul>
<h3>Selon Tom&#8217;s Guide, la RC1 de Firefox 3 avant la fin du mois de mai &#8211; 14 mai 2008</h3>
<p>Après moult béta, il semblerait bien que F3RC1 pointe le bout du museau d&#8217;ici peu de temps. Au programme, tout un lot d&#8217;améliorations mais surtout une gestion mémoire qui ne n&#8217;accaparera plus toute la mémoire système? Good news ! <em><a href="http://www.infos-du-net.com/actualite/13529-RC1-Firefox-3.html" target="_blank">La news chez Tom&#8217;s Guide</a>.</em></p>
<h3>Freebox, firmware ADSL 1.3.4 disponible &#8211; 13 mai 2008</h3>
<p>Il ne vous reste plus qu&#8217;à rebooter&#8230;</p>
<h3>Mettez un peu de Social dans votre site &#8211; 13 mai 2008</h3>
<p>Google annonce ce jour la préversion de Google Friends Connect, qui vous permettra de mettre une pointe de Social dans votre site. Ce nouveau système est basé sur <a href="http://code.google.com/apis/opensocial/" target="_blank">Open Social</a> de Google.  Les explications sur Clubic et Vnunet :</p>
<ul>
<li><a href="http://www.clubic.com/actualite-139382-google-friend-connect-widgets-site-reseau-social.html" target="_blank">Google Friends Connect sur Clubic</a></li>
<li><a href="http://www.vnunet.fr/fr/news/2008/05/13/google_friends_connect_favorise_la_compatibilite_des_sites_sociaux" target="_blank">Google Friends Connect sur Vnunet</a></li>
</ul>
<p>Attention toutefois, apparemment pour le moment la gestion du choix des informations personnelles à afficher ne serait pas encore en place.  Maintenant, c&#8217;est à vous et cela se passe <a href="http://spreadsheets.google.com/viewform?key=pwEBHp6JClVy1O4znn9F4YA&amp;email=true" target="_blank">ici pour s&#8217;inscrire</a>.</p>
<h3>Canal + le bouquet gratuit : c&#8217;est possible ? &#8211; 12 mai 2008</h3>
<p>Et oui, mais seulement pendant 10 jours à compter du 16 mai (vendredi à 12h00). Espérons que la programmation sera d&#8217;enfer pendant ces 10 jours ! Dès le 16 au soir vous aurez droit à &#8216;Casino Royal&#8217; qui est à mon sens (et ce n&#8217;est que mon avis personnel) le meilleur James Bond de toute la série. <strong>Nota :</strong> je ne dis pas cela pour lancer un troll, hein <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ! <em>Source : Freenews (<a href="http://www.freenews.fr/nat/5930-television-canal-le-bouquet-gratuit.html" target="_blank">Canal + le Bouquet Gratuit</a>)</em></p>
<h3>Microsoft</h3>
<p>Malgré une offre de plus de 45 milliards de dollars, Yahoo n&#8217;a pas succombé aux chants des espèces sonnantes et trébuchantes. Conclusion <a href="http://www.clubic.com/actualite-138556-yahoo-microsoft-strategie-deal.html" target="_blank">Microsoft a retiré son offre</a></p>
<p>.</p>
<h3>Alice devra bientôt choisir son prince charmant</h3>
<p><a href="http://www.neteco.com/138586-offres-rachat-acquerir-fai-alice.html" target="_blank">Les offres ont étés déposées</a>, semble t-il, il ne reste plus qu&#8217;à la belle à choisir entre Iliad, Neuf ou Numericable pour convoler en noces.</p>
<h3>Actualité des frameworks PHP</h3>
<h4>Copix</h4>
<p><a href="http://pelmel.org/spip/spip.php?article46=">Sortie de Copix 3.0.3</a>, je me permets de citer Brice Favre :</p>
<blockquote>
<p class="spip">Copix 3.0.3 est officiellement disponible sur la page de <a class="spip_out" href="http://www.copix.org/index.php/wiki/Telechargements">téléchargements </a> du projet. Pas mal de nouveautés majeures. Parmi celles-ci on peut citer l’apparition de <a class="spip_out" href="http://svn.copix.org/wiki/CopixValidator">Validateurs</a> qui permettent de valider objets, tableaux ou autre. Il est aussi possible de gérer des ressources web à l’intérieur du répertoire d’un modules, pratique pour pakager une application complète avec images, icônes et javascripts. D’ailleurs j’ai commencé à créer <a class="spip_out" href="http://svn.copix.org/browser/trunk/project/modules/public/devel/webtools/wbe">un module wbe</a> pour regrouper les différents éditeurs html type tiny MCE et FCKEditor.</p>
<p class="spip">A suivre&#8230;</p>
</blockquote>
<h4>Jelix</h4>
<p><a href="http://www.itanea.com/blog/wp-content/uploads/logo_jelix_moyen.png"><img class="size-full wp-image-256" style="vertical-align: top;" title="logo_jelix_moyen" src="http://www.itanea.com/blog/wp-content/uploads/logo_jelix_moyen.png" alt="Le framework Jelix" width="180" height="60" /></a> Rappel : <a href="http://jelix.org/fr/news/post/actu-du-developpement-3">Jelix est en version 1.0.3</a> depuis fin avril.</p>
<h3>Chez Gandi ne se prendrait t-on pas pour Opel ?</h3>
<p><a href="http://www.gandi.net/" target="_blank"><img class="alignnone size-full wp-image-255" title="header_logo" src="http://www.itanea.com/blog/wp-content/uploads/header_logo.gif" alt="Gandi" width="257" height="58" /></a> Gandi invente <a href="http://iwi.lebardegandi.net/post/2008/05/05/Gandi-Flex-en-Beta" target="_blank">le système Flex</a> (en beta pour le moment) sur son hébergement. De quoi s&#8217;agit-il ? Tout simplement de pouvoir prévoir la montée en charge ponctuelle de vos besoins de puissance serveur et de ne pas pénaliser l&#8217;intégralité de votre site web parce que tous les soirs entre 18h et 20h tous vos amis viennent consulter votre blog. Gandi facture ce service mais pour un coût bien moindre que si vous aviez du dimensionner votre serveur en fonction de votre besoin maximal.  Flex cela rappelle tout de même le système Flex de l&#8217;Opel Zafira qui permet de passer facilement de 5 à 7 places. Mais cela tombe bien car dans leur explication, chez Gandi, il établisse la comparaison avec des voitures <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Flex cela rappelle aussi le langage d&#8217;Adobe pour les applications RIA.</p>
<h3><a href="http://www.clubic.com/actualite-139136-openoffice-org-beta-disponible-telechargement.html" target="_blank">Open Office 3 Beta disponible au téléchargement</a></h3>
<p>Attention il s&#8217;agit de la première Beta et je pense qu&#8217;il est inutile (voir très utile <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) de rappeler que cette version n&#8217;est pas à utiliser à d&#8217;autres fins que de simples tests ou de la recherche de bugs. Seule la version 2.4 est à utiliser dans un cadre professionnel.</p>
<ul>
<li><em><a href="http://www.01net.com/editorial/379569/openoffice-3.0-beta-1-les-nouveautes-en-images/" target="_blank">Le diaporama des nouvelles fonctionnalités par 01net</a></em></li>
</ul>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2008/01/20/2008-semaine-3-le-resume/" rel="bookmark" class="crp_title">2008, semaine 3 : le r&#233;sum&#233;</a></li><li><a href="http://www.itanea.com/blog/2008/12/16/actu-de-decembre-2008/" rel="bookmark" class="crp_title">L&#039;actu de décembre 2008</a></li><li><a href="http://www.itanea.com/blog/2008/01/23/2008-semaine-4-le-resume/" rel="bookmark" class="crp_title">2008, semaine 4 : le résumé</a></li><li><a href="http://www.itanea.com/blog/2008/06/02/l-actu-de-juin-2008/" rel="bookmark" class="crp_title">L&#039;actu de juin 2008</a></li><li><a href="http://www.itanea.com/blog/2008/08/12/actu-aout-2008/" rel="bookmark" class="crp_title">L&#039;actu d&#039;août 2008</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2008/05/05/l-actu-de-mai-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Login et authentification avec le Zend Framework</title>
		<link>http://www.itanea.com/blog/2008/05/04/login-et-authentification-avec-le-zend-framework/</link>
		<comments>http://www.itanea.com/blog/2008/05/04/login-et-authentification-avec-le-zend-framework/#comments</comments>
		<pubDate>Sun, 04 May 2008 00:47:48 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[logout]]></category>
		<category><![CDATA[matthew]]></category>
		<category><![CDATA[matthiew weier o'phinney]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[objet]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[weier o'phinney]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[Zend_Auth]]></category>
		<category><![CDATA[Zend_Form]]></category>

		<guid isPermaLink="false">http://blog.itanea.com/?p=253</guid>
		<description><![CDATA[Vous pouvez retrouver l&#8217;article original de Matthiew Weier O&#8217;Phinney à l&#8217;adresse suivante sur le site de Matthiew J&#8217;ai reçu un certain nombre de questions de personnes voulant savoir comment utiliser l&#8217;authentification et la persistance d&#8217;identité dans le Zend Framework. La question récurrente est de savoir comment combiner : un adapteur d&#8217;authentification un formulaire de login [...]]]></description>
			<content:encoded><![CDATA[<address class="important">Vous pouvez retrouver l&#8217;article original de <a href="http://weierophinney.net/matthew/resume" target="_blank">Matthiew Weier O&#8217;Phinney</a> à l&#8217;adresse suivante sur le site de <a href="http://weierophinney.net/matthew/archives/165-Login-and-Authentication-with-Zend-Framework.html" target="_blank">Matthiew</a></address>
<p><span class="serendipity_entryIcon">J&#8217;ai reçu un certain nombre de questions de personnes voulant savoir comment utiliser l&#8217;authentification et la persistance d&#8217;identité dans le Zend Framework. La question récurrente est de savoir comment combiner :<br />
</span></p>
<ul>
<li>un adapteur d&#8217;authentification</li>
<li>un formulaire de login</li>
<li>un controlleur pour les actions de login/logout</li>
<li>la vérification de l&#8217;authentification d&#8217;un utilisateur déjà authentifié lors de ses requêtes suivantes</li>
</ul>
<p>Ce n&#8217;est pas insurmontable, mais cela demande de savoir comment les différents éléments du modèle MVC travaillent ensemble, et comment utiliser le composant Zend_Auth. Jetons un coup d&#8217;oeil.</p>
<p><span id="more-253"></span></p>
<h2>Adaptateur d&#8217;authentification</h2>
<p>Pour cette partie, vous aurez besoin d&#8217;un <a href="http://framework.zend.com/manual/fr/zend.auth.html#zend.auth.introduction.adapters" target="_blank">adaptateur d&#8217;authentification</a>. Je ne rentrerai pas dans les détails d&#8217;utilisation de ce composant, car la documentation couvre parfaitement son fonctionnement et vos besoins peuvent varier en fonction de votre site. Je supposerai toutefois, que votre adaptateur d&#8217;authentification demande un login et un mode de passe comme identifiants. Notre contrôleur d&#8217;identification se servira de l&#8217;adaptateur, mais aura simplement un emplacement réservé pour le retrouver.</p>
<h2>Formulaire d&#8217;authentification</h2>
<p>Le formulaire d&#8217;authentification a proprement parler est vraiment simple. Vous pouvez ajouter quelques règles basiques de validation afin de prévenir toute attaque de la base de données ou d&#8217;un autre élément, mais penser à garder l&#8217;ensemble relativement simple. Pour les besoins de ce tutoriel, nous allons définir les critères suivants :</p>
<ul>
<li>le nom d&#8217;utilisateur doit se composer uniquement de caractère alphabétique, et doit contenir entre 3 et 20 caractères</li>
<li>le mot de passe sera constitué uniquement de caractères alphanumériques,  et doit contenir entre 6 et 20 caractères</li>
</ul>
<p>Le code du formulaire ressemblera à ceci :</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">class</span> LoginForm extends Zend_Form<br />
<span style="color: #66cc66;">{</span><br />
public <span style="font-weight: 700; color: #000000;">function</span> init<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$username</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">addElement</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;text&#8217;</span>, <span style="color: #ff0000;">&#8216;username&#8217;</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;filters&#8217;</span> =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;StringTrim&#8217;</span>, <span style="color: #ff0000;">&#8216;StringToLower&#8217;</span><span style="color: #66cc66;">)</span>,<br />
<span style="color: #ff0000;">&#8216;validators&#8217;</span> =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;Alpha&#8217;</span>,<br />
<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;StringLength&#8217;</span>, <span style="font-weight: 700; color: #000000;">false</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>,<br />
<span style="color: #66cc66;">)</span>,<br />
<span style="color: #ff0000;">&#8216;required&#8217;</span> =&gt; <span style="font-weight: 700; color: #000000;">true</span>,<br />
<span style="color: #ff0000;">&#8216;label&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;Your username:&#8217;</span>,<br />
<span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;</p>
<p><span style="color: #0000ff;">$password</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">addElement</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;password&#8217;</span>, <span style="color: #ff0000;">&#8216;password&#8217;</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;filters&#8217;</span> =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;StringTrim&#8217;</span><span style="color: #66cc66;">)</span>,<br />
<span style="color: #ff0000;">&#8216;validators&#8217;</span> =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;Alnum&#8217;</span>,<br />
<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;StringLength&#8217;</span>, <span style="font-weight: 700; color: #000000;">false</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>,<br />
<span style="color: #66cc66;">)</span>,<br />
<span style="color: #ff0000;">&#8216;required&#8217;</span> =&gt; <span style="font-weight: 700; color: #000000;">true</span>,<br />
<span style="color: #ff0000;">&#8216;label&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;Password:&#8217;</span>,<br />
<span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;</p>
<p><span style="color: #0000ff;">$login</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">addElement</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;submit&#8217;</span>, <span style="color: #ff0000;">&#8216;login&#8217;</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;required&#8217;</span> =&gt; <span style="font-weight: 700; color: #000000;">false</span>,<br />
<span style="color: #ff0000;">&#8216;ignore&#8217;</span> =&gt; <span style="font-weight: 700; color: #000000;">true</span>,<br />
<span style="color: #ff0000;">&#8216;label&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;Login&#8217;</span>,<br />
<span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;</p>
<p><span style="font-style: italic; color: #808080;">// Nous souhaitons afficher un message&#8217;failed authentication&#8217; si nécessaire;</span><br />
<span style="font-style: italic; color: #808080;">// nous le ferons avec le champs &#8216;description&#8217;, nous avons donc besoin</span><br />
<span style="font-style: italic; color: #808080;">// d&#8217;ajouter decorator.</span><br />
<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">setDecorators</span><span style="color: #66cc66;">(</span><a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;FormElements&#8217;</span>,<br />
<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;HtmlTag&#8217;</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;tag&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;dl&#8217;</span>, <span style="color: #ff0000;">&#8216;class&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;zend_form&#8217;</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>,<br />
<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;Description&#8217;</span>, <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;placement&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;prepend&#8217;</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>,<br />
<span style="color: #ff0000;">&#8216;Form&#8217;</span><br />
<span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<h2>Login Controller</h2>
<p>Maintenant, nous allons créer un contrôleur pour gérer les actions de login et de logout. Le cas d&#8217;utilisation typique serait :</p>
<ul>
<li>l&#8217;utilisateur clique sur le lien du formulaire d&#8217;authentification</li>
<li>l&#8217;utilisateur soumet le formulaire</li>
<li>le contrôleur traite le formulaire
<ul>
<li>une erreur de validation provoque l&#8217;affichage du formulaire avec le ou les messages d&#8217;erreurs</li>
<li>une identification correcte redirige vers la page d&#8217;accueil</li>
</ul>
</li>
<li>l&#8217;utilisateur connecté est redirigé vers la page d&#8217;accueil</li>
<li>l&#8217;action logout déconnecte l&#8217;utilisateur et le redirige vers le formulaire de login</li>
</ul>
<p>Le LoginController se servira aussi bien de l&#8217;adaptateur d&#8217;authentification que vous avez choisi, que du formulaire d&#8217;authentification. Nous passerons au constructeur du formulaire de login l&#8217;action et la méthode de formulaire (puisque nous savons maintenant ce qu&#8217;ils font pour cette usage du formulaire).<br />
Lorsque nous aurons des valeurs valides, nous les passerons à notre adaptateur d&#8217;authentification.</p>
<p>Allons y, créons le contrôleur. En premier, nous allons créer les accesseurs pour le formulaire et l&#8217;adaptateur d&#8217;authentification.</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">class</span> LoginController extends Zend_Controller_Action<br />
<span style="color: #66cc66;">{</span><br />
public <span style="font-weight: 700; color: #000000;">function</span> getForm<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #b1b100;">return</span> <span style="font-weight: 700; color: #000000;">new</span> LoginForm<span style="color: #66cc66;">(</span><a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span><br />
<span style="color: #ff0000;">&#8216;action&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;/login/process&#8217;</span>,<br />
<span style="color: #ff0000;">&#8216;method&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;post&#8217;</span>,<br />
<span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span></p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> getAuthAdapter<span style="color: #66cc66;">(</span><a href="http://www.php.net/array"><span style="color: #000066;">array</span></a> <span style="color: #0000ff;">$params</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// Laissé au soin du développeur&#8230;</span><br />
<span style="font-style: italic; color: #808080;">// Suppose que le constructeur prend un tableau de</span><br />
<span style="font-style: italic; color: #808080;">// paramètres qu&#8217;il utilise comme identifiant afin de vérifier l&#8217;identité.</span><br />
<span style="font-style: italic; color: #808080;">// B</span><span style="font-style: italic; color: #808080;">ien sur, n</span><span style="font-style: italic; color: #808080;">otre formulaire passera seulement les paramètres &#8216;nom d&#8217;utilisateur&#8217;</span><br />
<span style="font-style: italic; color: #808080;">// et &#8216;mot de passe&#8217;.</span><br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<p>Ensuite, nous avons besoin d&#8217;effectuer quelques vérifications, avant de dispatcher une quelconque action, afin de s&#8217;assurer :</p>
<ul>
<li>que si un utilisateur est déjà authentifié, mais n&#8217;a pas effectué d&#8217;action de déconnexion, il sera redirigé vers la page d&#8217;accueil</li>
<li>que si l&#8217;utilisateur n&#8217;est pas authentifié, mais a soumis une requête pour se déconnecter, nous devons le redirigé vers la page de login</li>
</ul>
<p>La routine preDispatch() ci-dessous effectuera cela pour nous:</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">class</span> LoginController extends Zend_Controller_Action<br />
<span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// &#8230;</span></p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> preDispatch<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>Zend_Auth::<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">hasIdentity</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// Si l&#8217;utilisateur est identifié, nous ne souhaitons pas voir le formulaire d&#8217;authentification;</span><br />
<span style="font-style: italic; color: #808080;">// cependant, l&#8217;action de déconnexion devrait toujours rester disponible.</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;logout&#8217;</span> != <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">getRequest</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">getActionName</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$this</span>-&gt;_helper-&gt;<span style="color: #006600;">redirector</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span>, <span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// If they aren&#8217;t, they can&#8217;t logout, so that action should </span><br />
<span style="font-style: italic; color: #808080;">// redirect to the login form</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;logout&#8217;</span> == <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">getRequest</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">getActionName</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$this</span>-&gt;_helper-&gt;<span style="color: #006600;">redirector</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<p>Maintenant, nous devons réaliser notre formulaire de login. Ce sera notre méthode la plus simple &#8212; il suffit de récupérer le formulaire et de l&#8217;assigner à la vue:</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">class</span> LoginController extends Zend_Controller_Action<br />
<span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// &#8230;</span></p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> indexAction<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">view</span>-&gt;<span style="color: #006600;">form</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">getForm</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<p>Le traitement du formulaire implique légèrement plus de logique. Nous devons vérifier qu&#8217;il provient bien d&#8217;une requête POST, que son contenu est valide et enfin que les paramètres d&#8217;authentification soient corrects.</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">class</span> LoginController extends Zend_Controller_Action<br />
<span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// &#8230;</span></p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> processAction<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$request</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">getRequest</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;</p>
<p><span style="font-style: italic; color: #808080;">// Vérifier que nous avons bien à faire à une requête POST</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$request</span>-&gt;<span style="color: #006600;">isPost</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$this</span>-&gt;_helper-&gt;<span style="color: #006600;">redirector</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span></p>
<p><span style="font-style: italic; color: #808080;">// Récupérons le formulaire et validons le</span><br />
<span style="color: #0000ff;">$form</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">getForm</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$form</span>-&gt;<span style="color: #006600;">isValid</span><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$request</span>-&gt;<span style="color: #006600;">getPost</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// Entrées invalides</span><br />
<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">view</span>-&gt;<span style="color: #006600;">form</span> = <span style="color: #0000ff;">$form</span>;<br />
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">render</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>; <span style="font-style: italic; color: #808080;">// rechargeons le formulaire</span><br />
<span style="color: #66cc66;">}</span></p>
<p><span style="font-style: italic; color: #808080;">// Récupérons notre adaptateur d&#8217;authentification et vérifions les identifiants</span><br />
<span style="color: #0000ff;">$adapter</span> = <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">getAuthAdapter</span><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$form</span>-&gt;<span style="color: #006600;">getValues</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #0000ff;">$auth</span> = Zend_Auth::<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #0000ff;">$result</span> = <span style="color: #0000ff;">$auth</span>-&gt;<span style="color: #006600;">authenticate</span><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$adapter</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$result</span>-&gt;<span style="color: #006600;">isValid</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// Identifiants invalides</span><br />
<span style="color: #0000ff;">$form</span>-&gt;<span style="color: #006600;">setDescription</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;Invalid credentials provided&#8217;</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">view</span>-&gt;<span style="color: #006600;">form</span> = <span style="color: #0000ff;">$form</span>;<br />
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">render</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>; <span style="font-style: italic; color: #808080;">// </span><span style="font-style: italic; color: #808080;">rechargeons le formulaire</span><br />
<span style="color: #66cc66;">}</span></p>
<p><span style="font-style: italic; color: #808080;">// Nous sommes authentifiés, redirection vers la page d&#8217;accueil</span><br />
<span style="color: #0000ff;">$this</span>-&gt;_helper-&gt;<span style="color: #006600;">redirector</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span>, <span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<p>Finalement, nous pouvons aborder l&#8217;action de logout. C&#8217;est presque aussi simple que l&#8217;affichage du formulaire d&#8217;authentification; nous devons simplement effacer l&#8217;identité de l&#8217;utilisateur de l&#8217;objet d&#8217;authentification et rediriger:</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">class</span> LoginController extends Zend_Controller_Action<br />
<span style="color: #66cc66;">{</span><br />
<span style="font-style: italic; color: #808080;">// &#8230;</span></p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> logoutAction<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
Zend_Auth::<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">clearIdentity</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #0000ff;">$this</span>-&gt;_helper-&gt;<span style="color: #006600;">redirector</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;index&#8217;</span><span style="color: #66cc66;">)</span>; <span style="font-style: italic; color: #808080;">// Retournez à la page de login</span><br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<p>Ok, nous venons de mettre en place les routines de login/logout. Jetons un œil à la seule vue associée que nous ayons, le formulaire:</p>
<div class="php" style="text-align: left;"><span style="font-weight: 700; color: #000000;">&lt;?</span> <span style="font-style: italic; color: #808080;">// login/index.phtml ?&gt;</span><br />
&lt;h2&gt;Please Login&lt;/h2&gt;<br />
<span style="font-weight: 700; color: #000000;">&lt;?</span>= <span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">form</span> <span style="font-weight: 700; color: #000000;">?&gt;</span></div>
<p>Voilà c&#8217;est tout. Le composant Zend_Form permet vraiment d&#8217;avoir des scripts de vues simples. <img class="emoticon" style="display: inline; vertical-align: bottom;" src="http://weierophinney.net/matthew/templates/matthew/img/emoticons/smile.png" alt=":-)" /></p>
<h2>Vérifications pour utilisateurs authentifiés</h2>
<p>La dernière chose à voir est : comment puis je déterminer qu&#8217;un utilisateur est authentifié, et restreindre son accès s&#8217;il ne l&#8217;est pas ?</p>
<p>Si vous regarder attentivement la méthode preDispatch() vue plus haut, vous remarquerez que cela est peut être déjà fait. Zend_Auth rend persistante l&#8217;identité dans la session, ce qui vous permet de la vérifier directement en utilisant la construction suivante:</p>
<div class="php" style="text-align: left;">Zend_Auth::<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">hasIdentity</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span></div>
<p>Vous pouvez vous en servir pour déterminer si l&#8217;utilisateur est authentifié, et dans le cas contraire rediriger l&#8217;utilisateur vers la page de login avec l&#8217;aide du redirector. Vous pouvez récupérer l&#8217;identité depuis l&#8217;objet auth de la manière suivante:</p>
<div class="php" style="text-align: left;"><span style="color: #0000ff;">$identity</span> = Zend_Auth::<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">getIdentity</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;</div>
<p>Cela pourrait être utilisé dans un helper afin de montrer le statut de connexion dans le template, par exemple:</p>
<div class="php" style="text-align: left;"><span style="font-style: italic; color: #808080;">/**<br />
* ProfileLink helper<br />
*<br />
* Call as $this-&gt;profileLink() in your layout script<br />
*/</span><br />
<span style="font-weight: 700; color: #000000;">class</span> My_View_Helper_ProfileLink<br />
<span style="color: #66cc66;">{</span><br />
public <span style="color: #0000ff;">$view</span>;</p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> setView<span style="color: #66cc66;">(</span>Zend_View_Interface <span style="color: #0000ff;">$view</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$this</span>-&gt;<span style="color: #006600;">view</span> = <span style="color: #0000ff;">$view</span>;<br />
<span style="color: #66cc66;">}</span></p>
<p>public <span style="font-weight: 700; color: #000000;">function</span> profileLink<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><br />
<span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$auth</span> = Zend_Auth::<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;<br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$auth</span>-&gt;<span style="color: #006600;">hasIdentity</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />
<span style="color: #0000ff;">$username</span> = <span style="color: #0000ff;">$auth</span>-&gt;<span style="color: #006600;">getIdentity</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>-&gt;<span style="color: #006600;">username</span>;<br />
<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&#8216;&lt;a href=&nbsp;&raquo;/profile&#8217;</span> . <span style="color: #0000ff;">$username</span> . <span style="color: #ff0000;">&#8216;&nbsp;&raquo;&gt;Welcome, &#8216;</span> . <span style="color: #0000ff;">$username</span> .  <span style="color: #ff0000;">&#8216;&lt;/a&gt;&#8217;</span>;<br />
<span style="color: #66cc66;">}</span></p>
<p><span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&#8216;&lt;a href=&nbsp;&raquo;/login&nbsp;&raquo;&gt;Login&lt;/a&gt;&#8217;</span>;<br />
<span style="color: #66cc66;">}</span><br />
<span style="color: #66cc66;">}</span></p>
</div>
<h2>Conclusion</h2>
<p>Zend_Auth réalise la plupart du travail en arrière plan pour faire de la persistance d&#8217;identité dans la session une banalité. Combinez-le avec Zend_Form, et vous aurez une solution très facile à mettre en œuvre pour retrouver et valider des identifiants; ajoutez à cela les évènements dans le composant Zend_Controller pour filtrer les actions avant de les rediriger, et vous pouvez restreindre très facilement l&#8217;accès aux applications en utilisant le statut d&#8217;authentification.</p>
<p><strong>Nota :</strong> <em>Cette traduction est livrée telle quelle, si toutefois vous constatez une erreur de traduction, je suis bien sur ouvert à toute correction.</em></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2007/02/04/ubuntips-arreter-des-programmes-bloques/" rel="bookmark" class="crp_title">UbunTips : Arrêter des programmes bloqués</a></li><li><a href="http://www.itanea.com/blog/2008/11/27/zend-framework-utiliser-zend-framework-et-doctrine-auteur-ruben-vermeersch-traduction-fred-blanc/" rel="bookmark" class="crp_title">Zend framework : Utiliser Zend Framework et Doctrine (Auteur Ruben Vermeersch, Traduction Fred Blanc)</a></li><li><a href="http://www.itanea.com/blog/2009/11/24/zend-framework-la-1-9-6-pointe-le-bout-du-nez/" rel="bookmark" class="crp_title">Zend Framework : la 1.9.6 pointe le bout du nez ?</a></li><li><a href="http://www.itanea.com/blog/2007/01/30/realiser-des-screencasts-sous-ubuntu/" rel="bookmark" class="crp_title">UbunTips : Réaliser des screencasts sous Ubuntu</a></li><li><a href="http://www.itanea.com/blog/2008/03/17/sortie-du-zend-framework-v15-finale/" rel="bookmark" class="crp_title">Sortie du Zend Framework v1.5 finale</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2008/05/04/login-et-authentification-avec-le-zend-framework/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
