<?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>Blog de la rubrique Web &#187; PHP</title>
	<atom:link href="https://blog.developpez.com/web/pcategory/php/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/web</link>
	<description></description>
	<lastBuildDate>Thu, 16 Jan 2014 14:31:09 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>HTML Media Capture : prenez des photos depuis un champ de formulaire</title>
		<link>https://blog.developpez.com/web/p12432/web/html-media-capture-prenez-des-photos-depuis-un-champ-de-formulaire</link>
		<comments>https://blog.developpez.com/web/p12432/web/html-media-capture-prenez-des-photos-depuis-un-champ-de-formulaire#comments</comments>
		<pubDate>Thu, 16 Jan 2014 14:29:47 +0000</pubDate>
		<dc:creator><![CDATA[Bovino]]></dc:creator>
				<category><![CDATA[(X)HTML/CSS]]></category>
		<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/web/?p=307</guid>
		<description><![CDATA[HTML Media Capture et l&#8217;attribut capture. Mettez à profit les périphériques de votre mobile pour remplir les champ file HTML5 apporte de nombreuses nouvelles fonctionnalités, notamment concernant les formulaires. Nous allons voir dans ce billet la spécification HTML Media Capture. Celle-ci permet d&#8217;élargir les capacités des champs de formulaires de type file. Jusqu&#8217;à présent, les [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>HTML Media Capture et l&rsquo;attribut capture.</strong><br />
<strong>Mettez à profit les périphériques de votre mobile pour remplir les champ file</strong></p>
<p>HTML5 apporte de nombreuses nouvelles fonctionnalités, notamment concernant les formulaires.</p>
<p>Nous allons voir dans ce billet la spécification <em>HTML Media Capture</em>.<br />
Celle-ci permet d&rsquo;élargir les capacités des champs de formulaires de type <code class="codecolorer text default"><span class="text">file</span></code>.<br />
Jusqu&rsquo;à présent, les champs de formulaires de type <code class="codecolorer text default"><span class="text">file</span></code> permettaient juste d&rsquo;ouvrir une fenêtre pour récupérer dans le système de fichiers celui (ou ceux) à envoyer avec le formulaire.<br />
Il est dorénavant possible d&rsquo;utiliser ces mêmes champs pour utiliser l&rsquo;un des périphériques de capture (audio, vidéo ou image) pour créer le fichier à envoyer.</p>
<p><strong>Comment le mettre en œuvre ?</strong><br />
La mise en place d&rsquo;un tel système est particulièrement simple.<br />
Il suffit d&rsquo;ajouter au champ un attribut <code class="codecolorer text default"><span class="text">capture</span></code> et le tour est joué ! Cet attribut étant de type booléen, c&rsquo;est-à-dire que sa seule présence (sans valeur ou quelle que soit sa valeur) suffit à indiquer au navigateur le comportement souhaité.</p>
<p>Enfin&#8230; il suffit&#8230; pas tant que ça en fait.<br />
En réalité, l&rsquo;attribut <code class="codecolorer text default"><span class="text">capture</span></code> n&rsquo;est pas suffisant, en effet, ce seul attribut ne permet pas de savoir quel type de media est demandé, donc quel périphérique utiliser.<br />
Il est donc nécessaire de préciser aussi l&rsquo;attribut <code class="codecolorer text default"><span class="text">accept</span></code> avec une valeur correspondant au type mime souhaité.</p>
<p>Notez que l&rsquo;attribut <code class="codecolorer text default"><span class="text">capture</span></code> n&rsquo;oblige pas l&rsquo;utilisateur à utiliser un périphérique : il lui est demandé s&rsquo;il veut envoyer un fichier existant ou s&rsquo;il veut utiliser le périphérique approprié.</p>
<p>Exemples.<br />
Voici les trois cas possibles d&rsquo;utilisation à l&rsquo;heure actuelle :</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">form</span></a> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;...&quot;</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;post&quot;</span> <span style="color: #000066;">enctype</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;multipart/form-data&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- Pour une image (appareil photo) --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #ddbb00;">&amp;lt;</span>input type=&quot;file&quot; name=&quot;image&quot; accept=&quot;image/*&quot; capture<span style="color: #ddbb00;">&amp;gt;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- Pour une vidéo (caméra) --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #ddbb00;">&amp;lt;</span>input type=&quot;file&quot; name=&quot;video&quot; accept=&quot;video/*&quot; capture<span style="color: #ddbb00;">&amp;gt;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- Pour un son (micro) --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #ddbb00;">&amp;lt;</span>input type=&quot;file&quot; name=&quot;son&quot; accept=&quot;audio/*&quot; capture<span style="color: #ddbb00;">&amp;gt;</span><br />
&nbsp; &nbsp; <span style="color: #ddbb00;">&amp;lt;</span>input type=&quot;submit&quot; value=&quot;Upload&quot;<span style="color: #ddbb00;">&amp;gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">form</span></a>&gt;</span></div></div>
<p><strong>Compatibilité.</strong><br />
À l&rsquo;heure actuelle, seuls les navigateurs pour mobiles et tablettes semblent supporter cette fonctionnalité.<br />
<a href="http://mobilehtml5.org/">Voir la table de compatibilité pour mobiles</a>.<br />
Mais gageons que les versions desktop des navigateurs vont l&rsquo;implémenter rapidement.</p>
<p><a href="http://www.w3.org/TR/html-media-capture/">Voir les spécifications du W3C</a> (comprenant des exemples plus avancés).</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forcer le chargement d&#8217;un fichier en HTML5</title>
		<link>https://blog.developpez.com/web/p12304/php/forcer-le-chargement-dun-fichier-en-html5</link>
		<comments>https://blog.developpez.com/web/p12304/php/forcer-le-chargement-dun-fichier-en-html5#comments</comments>
		<pubDate>Thu, 31 Oct 2013 15:37:20 +0000</pubDate>
		<dc:creator><![CDATA[Bovino]]></dc:creator>
				<category><![CDATA[(X)HTML/CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/web/?p=298</guid>
		<description><![CDATA[Lorsque vous proposez une ressource aux visiteurs de votre site (images, documents PDF ou autres, etc.), les navigateurs vont essayer de les afficher via des fonctionnalités intégrées ou des extensions/plugins. Or, si vous souhaitez juste proposer ces ressources au téléchargement, vous serez obligé de &#171;&#160;forcer la main&#160;&#187; au navigateur côté serveur : solution en PHP [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Lorsque vous proposez une ressource aux visiteurs de votre site (images, documents PDF ou autres, etc.), les navigateurs vont essayer de les afficher via des fonctionnalités intégrées ou des extensions/plugins.<br />
Or, si vous souhaitez juste proposer ces ressources au téléchargement, vous serez obligé de &laquo;&nbsp;forcer la main&nbsp;&raquo; au navigateur côté serveur :</p>
<ul>
<li><a href="http://php.developpez.com/faq/?page=fichiers_upload#fichiers_forcedownload" title="solution en PHP">solution en PHP</a> ;</li>
<li><a href="http://javaweb.developpez.com/faq/struts/?page=files#download" title="solution en Java">solution en Java</a> ;</li>
<li><a href="http://dotnet.developpez.com/faq/asp/csharp/?page=navigationgeneral#downloadcurrentwindow" title="solution en C#">solution en C#</a>.</li>
</ul>
<p>En gros, la technique consiste à associer au fichier souhaité un en-tête HTTP <code class="codecolorer text default"><span class="text">Content-Disposition</span></code> qui indiquera que celui-ci doit être téléchargé et non affiché.</p>
<p>Bien entendu, si votre page est uniquement en (X)HTML, vous êtes de la revue ! La seule technique possible est de transformer votre fichier dans un format qui ne peut être affiché par le navigateur (la technique la plus classique étant de le compresser en archive zip).</p>
<p>Mais cela, c&rsquo;était avant.<br />
Car désormais, HTML5 vous permet de rendre vos fichiers téléchargeables, quel que soit leur format, de façon très simple.</p>
<p>Il suffit d&rsquo;utiliser l&rsquo;attribut <code class="codecolorer text default"><span class="text">download</span></code>.<br />
<span id="more-298"></span><br />
<strong>Comment s&rsquo;utilise cet attribut ?</strong><br />
Le plus simplement du monde : en l&rsquo;intégrant à la balise <code class="codecolorer html4strict default"><span class="html4strict"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;</span></span></code> ou <code class="codecolorer html4strict default"><span class="html4strict"><span style="color: #009900;">&lt;area&gt;</span></span></code> !</p>
<p><strong>Quelle valeur donner à cet attribut ?</strong><br />
Celle que vous souhaitez.<br />
Plus exactement, la valeur va correspondre au nom de fichier présélectionné dans la fenêtre de téléchargement, mais si vous ne précisez pas de valeur (<code class="codecolorer html4strict default"><span class="html4strict">download</span></code>) ou si vous mettez une valeur vide (<code class="codecolorer html4strict default"><span class="html4strict">download=&quot;&quot;</span></code>), alors le nom de fichier par défaut sera celui du fichier original.<br />
Exemples :</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;foo.png&quot;</span>&gt;</span>Enregistrer<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;foo.png&quot;</span>&gt;</span>Enregistrer<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;foo.png&quot;</span>&gt;</span>Enregistrer<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;</span></div></div>
<p><strong>Quels types de fichiers peuvent être téléchargés ?</strong><br />
Il n&rsquo;y a pas de restriction sur les types de fichiers que vous pouvez proposer en téléchargement, néanmoins, ils devront respecter la <em>Same Origin Policy</em> (même domaine, même TLD, même sous domaine, même protocole, même port).<br />
Notez aussi que vous pouvez proposer en téléchargement des fichiers encodés en base64, donc en particulier des fichiers générés depuis le navigateur.</p>
<p><strong>Mais alors, mes codes serveur peuvent être téléchargés ?</strong><br />
Bien sûr que non, heureusement !<br />
Si vous demandez un fichier .php par exemple sur le serveur, celui-ci sera d&rsquo;abord interprété avant d&rsquo;être envoyé. Ce sera donc le fichier généré qui sera récupéré et non le fichier contenant le code source.<br />
Il est donc en revanche possible de proposer de télécharger des fichiers images (par exemples) générés dynamiquement sur le serveur.</p>
<p><strong>Quel est le support des navigateur ?</strong><br />
C&rsquo;est le bémol concernant cet attribut&#8230;<br />
À l&rsquo;heure actuelle, seuls Firefox, Chrome et Opera (en version desktop ou mobile) ne reconnaissent cet attribut, pour les autres navigateurs, vous devrez passer par une solution de contournement.</p>
<p><strong>Comment savoir si un navigateur prend en charge download ?</strong><br />
Il est possible, avec JavaScript, de détecter si la fonctionnalité est supportée, pour cela, on crée un nouvel élément <code class="codecolorer html4strict default"><span class="html4strict"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;</span></span></code> et on vérifie s&rsquo;il possède une propriété <code class="codecolorer html4strict default"><span class="html4strict">download</span></code> :</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> testA <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'download'</span> <span style="color: #000066; font-weight: bold;">in</span> testA<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">// Le navigateur supporte l'attribut download</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">// Le navigateur ne supporte pas l'attribut download</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p><a href="http://dmouronval.developpez.com/download/" title="Voir une page d'exemple">Voir une page d&rsquo;exemple</a>.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Tour Lille 2011</title>
		<link>https://blog.developpez.com/web/p10535/php/php_tour_lille_2011</link>
		<comments>https://blog.developpez.com/web/p10535/php/php_tour_lille_2011#comments</comments>
		<pubDate>Thu, 24 Nov 2011 17:59:36 +0000</pubDate>
		<dc:creator><![CDATA[Bovino]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voilà enfin arrivé ce jour tant attendu (en tout cas par moi). Je suis donc prêt, bic et carnet en main, à prendre pleins de bonnes notes sur les différents aspects de PHP. 8h30, je suis sur le parking et avance vers le site de Euratecnologies de Lille. Déjà, rien que pour la réaffectation de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voilà enfin arrivé ce jour tant attendu (en tout cas par moi). Je suis donc prêt, bic et carnet en main, à prendre pleins de bonnes notes sur les différents aspects de PHP.</p>
<p><strong>8h30</strong>, je suis sur le parking et avance vers le site de Euratecnologies de Lille. Déjà, rien que pour la réaffectation de ce bâtiment, le détour en valait la peine.</p>
<p>Après avoir récupéré mon badge et mon petit cadeau, un éléphant rose (ça va se chamailler à la maison), je me dirige vers l’auditoire pour la <em>keynote</em> présentée par Jean-Marc Fontaine de Alter Way.<br />
La bienvenue nous est souhaitée et la présentation des deux jours nous est narrée, tout en nous présentant l’AFUP et en nous motivant pour ouvrir des antennes dans nos régions (peut-être une bonne idée à creuser là).</p>
<p>Le sujet de la première conférence à laquelle j’ai assisté est la présentation de PHP 5.4 par Julien Pauli, nous expliquant les grandes nouveautés, qui ne se trouvent pas forcément dans le langage, mais bien dans sa construction, avec la mise en place de RFC, permettant à chaque utilisateur d’émettre des changements dans le langage.<br />
Un cycle de vie déterminé de 3 ans par mise à jour majeure et de 1 an pour une mise à jour mineure.<br />
De plus une bonne nouvelle est que la descendance ne sera plus cassée dans les versions mineures.<br />
Bien sûr, les nouveautés liées au langage nous sont présentées, mais cela n’est plus un secret et l’on trouve tout sur developpez.com.<br />
Par contre, Julien nous annonce un gain de performance de l’ordre de 55% par rapport à PHP5.3, avec benchmark à la clé.<br />
Julien nous a promis ses <em>slides</em> sur le site de l’AFUP très prochainement.</p>
<p>Ensuite, j’ai assisté à l’industrialisation du site lamaisondevalerie.fr , faisant partie du groupe <em>Conforama</em>, présentée par Sophie Beaupuis.<br />
Ici expliquer en quelque mots serait difficile tant les infos étaient nombreuses, on a pu voir tout le panel d’outils utilisés pour le développement de son application (très orienté Zend avec la suite de produit complets).<br />
Ce qui était agréable dans cette présentation est que madame Beaupuis s’est mouillée en nous expliquant les freins liés à son projet et a eu l’honnêteté de dire ‘désolée je ne connais pas’.</p>
<p>J’ai pris 5 minutes pour vous faire ces quelques lignes et je remercie Jean Marc Fontaine de m’avoir trouvé un petit Wifi.<br />
Ce soir je vous poste la suite de cette première journée.<br />
Un seul regret actuellement, est de ne pas avoir pris de CV avec moi, parce que les offres d’emploi ici sont palpables… Merci le réseautage !</p>
<p><em>Par <a href="http://www.developpez.net/forums/u66971/maitrepylos/">MaitrePylos</a></em></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un classique AJAX : utiliser les données au bon moment !</title>
		<link>https://blog.developpez.com/web/p10493/php/un_classique_ajax_utiliser_les_donnees_a</link>
		<comments>https://blog.developpez.com/web/p10493/php/un_classique_ajax_utiliser_les_donnees_a#comments</comments>
		<pubDate>Fri, 11 Nov 2011 13:46:23 +0000</pubDate>
		<dc:creator><![CDATA[Bovino]]></dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[S&#8217;il est une erreur classique chez les débutants en AJAX, que l&#8217;on retrouve régulièrement sur le forum AJAX, c&#8217;est de vouloir utiliser les données du serveur avant de les avoir reçues. Faisons une petite analogie. Imaginons que vous ayez une poule. Tous les matins, vous souhaitez savoir combien d’œufs ont été pondus, vous envoyez donc [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>S&rsquo;il est une erreur classique chez les débutants en AJAX, que l&rsquo;on retrouve régulièrement <a href="http://www.developpez.net/forums/f458/webmasters-developpement-web/ajax/">sur le forum AJAX</a>, c&rsquo;est de vouloir utiliser les données du serveur <strong>avant</strong> de les avoir reçues.</p>
<p>Faisons une petite analogie.<br />
Imaginons que vous ayez une poule. Tous les matins, vous souhaitez savoir combien d’œufs ont été pondus, vous envoyez donc quelqu&rsquo;un les compter.<br />
J&rsquo;imagine, qu&rsquo;au moment même où cette personne part compter les œufs, il ne vous viendrait pas à l&rsquo;esprit de l&rsquo;appeler pour lui demander le compte : la moindre des choses est d&rsquo;attendre qu&rsquo;elle soit revenue car avant, elle ne connait pas l&rsquo;information !</p>
<p>Avec AJAX, c&rsquo;est exactement pareil. Le premier A de l&rsquo;acronyme signifie <em>asynchronous</em> (asynchrone), c&rsquo;est-à-dire que JavaScript ne va pas attendre la réponse du serveur avant de continuer à exécuter le code, sauf bien entendu si vous avez spécifié le mode synchrone.<br />
Ainsi, le seul moment où l&rsquo;on est sûr d&rsquo;avoir reçu la réponse est lorsque la propriété <em>readyState</em> de l&rsquo;objet XMLHttpRequest vaut 4 et que la propriété <em>status</em> correspond à un code de réussite de la requête (classiquement 200). C&rsquo;est pourquoi <strong>tous les traitements se basant sur la réponse du serveur doivent être traités dans le callback de la requête.</strong>.</p>
<p>Avant d&rsquo;écrire son code, il est donc fondamental de se demander si les données que l&rsquo;on veut utiliser existent ou non.</p>
<p>A titre d&rsquo;exemple, un petit code :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var xhr = new XMLHttpRequest(), monResultat; <br />
xhr.open('POST', url); <br />
xhr.onreadystatechange = function(){ <br />
&nbsp; &nbsp; if(xhr.readyState == 4 &amp;&amp; xhr.status == 200){ <br />
&nbsp; &nbsp; &nbsp; &nbsp; monResultat = xhr.responseText; <br />
&nbsp; &nbsp; &nbsp; &nbsp; alert(monResultat); <br />
&nbsp; &nbsp; } <br />
}; <br />
xhr.send('variable=valeur'); <br />
alert(maVariable);</div></div>
<p>Ici, le premier <em>alert()</em> affiché sera celui de la dernière ligne : JavaScript n&rsquo;attend pas la réponse du serveur pour continuer à exécuter le code et cette alerte affichera <em>undefined</em>, puisqu&rsquo;au moment où cette instruction est interprétée, aucune affectation n&rsquo;a encore été faite pour <em>maVariable</em> ! Puis, lorsque le serveur aura répondu, le second <em>alert()</em> sera affiché avec cette fois la valeur attendue.</p>
<p>Voir aussi :</p>
<ul>
<li><a href="http://nicolaspied.developpez.com/ajax-premiers-pas/">Vos premiers pas dans les nouvelles technologies</a></li>
<li><a href="http://dmouronval.developpez.com/tutoriels/ajax/comprendre-requete-ajax/">Comprendre les mécanismes d&rsquo;AJAX</a></li>
<li><a href="http://ajax.developpez.com/faq/javascript/?page=Ajax">La FAQ AJAX</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Le HTML5, c&#8217;est pour quand ?</title>
		<link>https://blog.developpez.com/web/p10384/php/le_html5_c_est_pour_quand</link>
		<comments>https://blog.developpez.com/web/p10384/php/le_html5_c_est_pour_quand#comments</comments>
		<pubDate>Mon, 10 Oct 2011 20:24:29 +0000</pubDate>
		<dc:creator><![CDATA[Bovino]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[S&#8217;il est bien une question qui revient régulièrement sur les forums Développement Web, c&#8217;est de savoir quand on pourra commencer à utiliser le HTML5. La bonne nouvelle La bonne nouvelle, c&#8217;est que la réponse est très simple : il est déjà possible de publier des pages en HTML5 ! Ah bon ? Tous les navigateurs [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>S&rsquo;il est bien une question qui revient régulièrement sur les forums <a href="http://www.developpez.net/forums/f9/webmasters-developpement-web/">Développement Web</a>, c&rsquo;est de savoir quand on pourra commencer à utiliser le HTML5.</p>
<p><strong>La bonne nouvelle</strong></p>
<p>La bonne nouvelle, c&rsquo;est que la réponse est très simple : il est déjà possible de publier des pages en HTML5 !</p>
<p><strong>Ah bon ? Tous les navigateurs sont compatibles ?</strong></p>
<p>Voilà effectivement la question sous-jacente à la précédente : quelles sont les fonctionnalités apportées par HTML5 déjà exploitables en production.<br />
A cette question, il est difficile de répondre : les choses évoluent très vite et ce qui est vrai aujourd&rsquo;hui ne le sera pas demain.<br />
D&rsquo;autre part, répondre à cette question n&rsquo;est pas l&rsquo;objet de ce billet !<br />
En revanche, ce qu&rsquo;il faut garder à l&rsquo;esprit, c&rsquo;est que le HTML5 ne se limite pas, encore heureux, aux nouvelles balises et aux nouvelles interfaces.<br />
De plus, le HTML5 est pensé pour être complètement rétro-compatible, ce qui signifie que toute page codée en HTML 4 ou en xhtml 1 valide est valide en HTML5 !<br />
Alors il ne faut pas hésiter : vous pouvez dès à présent passer toutes vos pages en HTML5, même si elles ne comportent aucun des ajouts apportés.</p>
<p><strong>D&rsquo;accord, mais alors comment faire ?</strong></p>
<p>C&rsquo;est très simple : il suffit juste de préciser le <em>doctype</em> adapté. En plus, le <em>doctype</em> HTML5 est le plus simple qui soit :</p>
<p><code class="codecolorer text default"><span class="text">&lt;!doctype html&gt;</span></code></p>
<p>Vous ne vous souvenez plus s&rsquo;il faut l&rsquo;écrire en majuscule ou en minuscule ?<br />
Ce n&rsquo;est pas grave, il est insensible à la casse !<br />
Vous pouvez aussi aller plus loin, puisque le HTML5 prévoit une balise <em>meta</em> spéciale pour indiquer l&rsquo;encodage :</p>
<p><code class="codecolorer text default"><span class="text">&lt;meta charset=&quot;iso-8859-1&quot; /&gt;</span></code></p>
<p>Là encore, faut-il ou non fermer les balises selon la norme XML, comme dans cet exemple ?<br />
Mais ici aussi, HTML5 accepte les standards HTML ou xhtml, ce qui signifie que c&rsquo;est comme vous le souhaitez (essayez toutefois de rester cohérent pour l&rsquo;ensemble de la page).</p>
<p>En conclusion, étant donné la simplification qu&rsquo;apporte le HTML5 en ce qui concerne de <em>doctype</em>, il serait dommage de s&rsquo;en priver : essayez et validez vos pages sur le site du W3C, vous comprendrez que le HTML5, c&rsquo;est pour hier !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe annonce l&#8217;ouverture du protocole RTMP</title>
		<link>https://blog.developpez.com/web/p7102/php/adobe_ouverture_du_protocole_rtmp</link>
		<comments>https://blog.developpez.com/web/p7102/php/adobe_ouverture_du_protocole_rtmp#comments</comments>
		<pubDate>Wed, 21 Jan 2009 19:10:40 +0000</pubDate>
		<dc:creator><![CDATA[freegreg]]></dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Depuis longtemps réclamé par la communauté, Adobe annonce aujourd&#8217;hui l&#8217;ouverture du protocole RTMP (Real Time Messaging Protocol) utilisé principalement dans Flash Media Server et LiveCycle Data Services. Ce protocole est utilisé pour transférer en temps réel au Flash Player des flux de données, de son et de vidéo. L&#8217;ouverture du protocole RTMP s&#8217;inscrit dans la [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Depuis longtemps réclamé par la communauté, <strong>Adobe annonce aujourd&rsquo;hui l&rsquo;ouverture du protocole RTMP</strong> (Real Time Messaging Protocol) utilisé principalement dans Flash Media Server et LiveCycle Data Services. Ce protocole est utilisé pour <strong>transférer en temps réel au Flash Player des flux de données, de son et de vidéo</strong>.<br />
L&rsquo;ouverture du protocole RTMP s&rsquo;inscrit dans la stratégie globale de la plateforme Flash. Ses spécifications seront publiées par Adobe au cours du premier semestre 2009 sur le site Adobe Developer Connection. </p>
<p>L&rsquo;accès libre au protocole RTMP pour les développeurs est une étape supplémentaire d&rsquo;Adobe entrant dans le cadre de l&rsquo;Open Screen Project, une initiative visant à exploiter des contenus riches et des applications web sur la majorité des écrans des terminaux (informatiques, mobiles, produits électroniques grand public).</p>
<p>N&rsquo;hésitez pas à réagir sur le <a href="http://www.developpez.net/forums/d676390/webmasters-developpement-web/general-conception-web/adobe-annonce-louverture-protocole-rtmp/">forum</a><br />
<span id="more-35"></span><br />
Le communiqué de presse original :</p>
<blockquote>
<p><strong>Adobe to Open Flash Platform Messaging Protocol</strong></p>
<p><strong>Publishing RTMP Advances Open Screen Project</strong></p>
<p>Adobe Systems Incorporated (Nasdaq:ADBE) today announced plans to publish the Real-Time Messaging Protocol (RTMP) specification, which is designed for high-performance transmission of audio, video, and data between Adobe® Flash® Platform technologies. Providing developers and companies open and free access to RTMP is the latest advancement of the Open Screen Project, an industry-wide initiative to enable the delivery of rich multi-screen experiences built on a consistent runtime environment for Web browsing and standalone applications across personal computers, mobile devices, and consumer electronics.</p>
<p>The RTMP specification is expected to be posted on the <a href="http://www.adobe.com/devnet/rtmp">Adobe Developer Connection</a> in the first half of 2009.</p>
<p>&laquo;&nbsp;With the RTMP specification, developers and companies will be able to provide users with optimized audio, video and data streaming, no matter what kind of device the user is on or where the content is coming from,&nbsp;&raquo; said Adobe CTO Kevin Lynch. &laquo;&nbsp;Our ongoing commitment to openness is accelerating adoption of the Flash Platform by developers and resulting in a new generation of Web applications, content and video experiences that run reliably across operating systems and devices.&nbsp;&raquo;</p>
<p>RTMP provides an enhanced and efficient way to deliver rich content. Developers and companies will have free and open access to the documented RTMP specification to help enable unparalleled delivery of video, audio and data in the open AMF, SWF, FLV and F4V formats compatible with Adobe Flash Player.</p>
<p>To benefit customers who want to protect their content, the open RTMP specification will not include Adobe&rsquo;s unique secure RTMP measures, nor will the license that accompanies the specification allow developers to circumvent such measures. However, developers will be free to use their own technological measures to secure content. The RTMP specification does not provide any requirement or restrictions on a developer&rsquo;s own measures to secure content.</p>
<p>The Open Screen Project is an initiative with 20 major industry partners who are working together to provide a consistent runtime environment for Web browsing and standalone applications — taking advantage of Adobe Flash</p>
<p>Player and, in the future, Adobe® AIR™. This consistent runtime environment will remove barriers to publishing Web content and rich applications across desktops, mobile phones, televisions, and other consumer electronics.</p>
<p>The Adobe Flash Platform is the de facto standard for delivering breakthrough applications, content and video on the Web. Adobe Flash Player is on over 98 percent of connected computers and delivers more than 80 percent of Web video worldwide, ensuring that content and applications are presented consistently in the format users want. For more information on the Adobe Flash Platform, please visit <a href="http://www.adobe.com/flashplatform">www.adobe.com/flashplatform</a>. For more information on the Open Screen Project, please visit: <a href="http://www.openscreenproject.org">www.openscreenproject.org</a>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveau FrameWork : Yii</title>
		<link>https://blog.developpez.com/web/p6990/php/nouveau_framework_yii</link>
		<comments>https://blog.developpez.com/web/p6990/php/nouveau_framework_yii#comments</comments>
		<pubDate>Tue, 23 Dec 2008 12:55:23 +0000</pubDate>
		<dc:creator><![CDATA[RideKick]]></dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les équipes du Framework PRADO ont récemment sorti son petit frère : Yii. Si je dis son petit frère c&#8217;est juste parce qu&#8217;il est né de la même équipe . Il semblerait qu&#8217;il soit plus puissant que Symfony lui même si on en croit le benchmark réalisé sur le site officiel. Au niveau des fonctionnalités [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les équipes du Framework PRADO ont récemment sorti son petit frère : <a href="http://www.yiiframework.com/">Yii</a>.</p>
<p>Si je dis son petit frère c&rsquo;est juste parce qu&rsquo;il est né de la même équipe .</p>
<p>Il semblerait qu&rsquo;il soit plus puissant que Symfony lui même si on en croit le <a href="http://www.yiiframework.com/performance/">benchmark </a>réalisé sur le site officiel.</p>
<p>Au niveau des fonctionnalités on retrouve les plus demandées :</p>
<p>&#8211; Localisation I18N/L10N<br />
&#8211; Gestion du cache<br />
&#8211; Entièrement Orienté Objet<br />
&#8211; Support de JQuery<br />
&#8211; Webservices</p>
<p>etc&#8230;.</p>
<p>Un dépôt d&rsquo;extensions est même intégré pour pouvoir ajouter les modules créés par les membres.</p>
<p>Vous pouvez donc aller le découvrir sur <a href="http://www.yiiframework.com/">http://www.yiiframework.com/</a></p>
<p>et en discuter sur nos forums : La <a href="http://www.developpez.net/forums/d663408/php/bibliotheques-frameworks/nouveau-framework-yii/">discussion</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Défi PHP 2eme édition</title>
		<link>https://blog.developpez.com/web/p6873/php/defi_php_2eme_edition</link>
		<comments>https://blog.developpez.com/web/p6873/php/defi_php_2eme_edition#comments</comments>
		<pubDate>Wed, 03 Dec 2008 08:00:55 +0000</pubDate>
		<dc:creator><![CDATA[RideKick]]></dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour a tous , La 2ème édition du défi PHP est sur les rails . Elle aura lieu du 8/01/09 au 5/02/09 soit pendant 1 mois. Les sujets seront annoncés le 8/01/09 au soir , la date limite de rendu des projets est fixée au 5/02/09 au soir. Nous esperons que comme la dernière fois [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour a tous , </p>
<p>La 2ème édition du défi PHP est sur les rails .<br />
Elle aura lieu du 8/01/09 au 5/02/09 soit pendant 1 mois.</p>
<p>Les sujets seront annoncés le 8/01/09 au soir , la date limite de rendu des projets est fixée au 5/02/09 au soir.</p>
<p>Nous esperons que comme la dernière fois vous serez nombreux a y participer.</p>
<p>Rendez vous en 2009 !</p>
<p><a href="http://www.developpez.net/forums/d653082/php/langage/defi-php-2eme-edition/">Lien vers le topic du Forum</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les résumés internals@ sont déplacés vers le forum</title>
		<link>https://blog.developpez.com/web/p6565/php/internals/les_resumes_internals_sont_deplaces_vers</link>
		<comments>https://blog.developpez.com/web/p6565/php/internals/les_resumes_internals_sont_deplaces_vers#comments</comments>
		<pubDate>Mon, 13 Oct 2008 16:46:17 +0000</pubDate>
		<dc:creator><![CDATA[Yogui]]></dc:creator>
				<category><![CDATA[internals@]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les résumés de la liste internals@ pour PHP seront désormais sur le forum : http://www.developpez.net/forums/d627347/php/langage/resumes-liste-internals/ N&#8217;hésitez pas à y mettre vos commentaires]]></description>
				<content:encoded><![CDATA[<p><img src="http://php.developpez.com/logo-php.png" alt="logo php" title="" /></p>
<p>Les résumés de la liste internals@ pour PHP seront désormais sur le forum :</p>
<p>http://www.developpez.net/forums/d627347/php/langage/resumes-liste-internals/</p>
<p>N&rsquo;hésitez pas à y mettre vos commentaires <img src="https://blog.developpez.com/web/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Résumé internals@ des trois semaines précédentes</title>
		<link>https://blog.developpez.com/web/p6421/php/internals/resume_internals_de_la_semaine_14</link>
		<comments>https://blog.developpez.com/web/p6421/php/internals/resume_internals_de_la_semaine_14#comments</comments>
		<pubDate>Sun, 12 Oct 2008 18:55:26 +0000</pubDate>
		<dc:creator><![CDATA[Yogui]]></dc:creator>
				<category><![CDATA[internals@]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici les points intéressants de la liste internals@ : Le repository SVN de PHP.net est en ligne et à jour par rapport à CVS, mais il reste encore à réécrire les scripts d&#8217;ACL ; L&#8217;analyse de la couverture de code (gcov) de PHP 4.4 (amplitude des tests par rapport au code source) sera bientôt supprimée [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://php.developpez.com/logo-php.png" alt="logo php" title="" /><br />
Voici les points intéressants de la liste internals@ :</p>
<ul>
<li><a href="http://marc.info/?l=php-internals&amp;m=122310127715198&amp;w=2">Le repository SVN de PHP.net</a> est en ligne et à jour par rapport à CVS, mais il reste encore à réécrire les scripts d&rsquo;ACL ;</li>
<li>L&rsquo;<a href="http://marc.info/?l=php-internals&amp;m=122379470602053&amp;w=2">analyse de la couverture de code (gcov) de PHP 4.4</a> (amplitude des tests par rapport au code source) sera bientôt supprimée ;</li>
<li>Sortie de <a href="http://marc.info/?l=php-internals&amp;m=122359871624770&amp;w=2">PHP 5.2.7 RC1</a> ;<br />
Zoë Slattery aprofondit ses <a href="http://marc.info/?l=php-internals&amp;m=122235647307384&amp;w=2">connaissances des opcodes PHP</a> ;</li>
<li>D&rsquo;interminables discussions sur les espaces de noms pour PHP 5.3 ;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
