<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.photozite.info/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Un peu de tout et surtout rien - web</title>
  <link>http://blog.photozite.info/index.php/</link>
  <description>Parcque je le vaut bien !</description>
  <language>fr</language>
  <pubDate>Tue, 01 Apr 2008 19:41:22 +0200</pubDate>
  <copyright>ARISTODEMO Damien</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Générer un squelette de page xHTML façilement</title>
    <link>http://blog.photozite.info/index.php/post/2007/12/28/Generer-un-squelette-de-page-xHTML-facilement</link>
    <guid isPermaLink="false">urn:md5:65f30dd44a6dae310b9b966448bd4464</guid>
    <pubDate>Fri, 28 Dec 2007 20:32:00 +0100</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Linux</category>
        <category>javascript</category><category>linux</category><category>php</category><category>tidy</category><category>web</category>    
    <description>    &lt;p&gt;Une petite astuce que j'ai trouvé lorsque je créé une nouvelle page ( sous &lt;ins&gt;Linux&lt;/ins&gt; ) avec &lt;a hreflang=&quot;en&quot; href=&quot;http://www.w3.org/People/Raggett/tidy/&quot;&gt;tidy&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;Dans une console :&amp;nbsp; --------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ tidy -i -asxhtml /dev/null &amp;gt;&amp;nbsp; monFichier.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;qui donnera&amp;nbsp;&lt;/p&gt;
&lt;p&gt;$ cat monFichier.html &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;jsh:html&quot;&gt;

&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&amp;gt;

&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;nbsp; &amp;lt;meta name=&quot;generator&quot; content=
&amp;nbsp; &quot;HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org&quot; /&amp;gt;

&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;l'option &lt;strong&gt;-i &lt;/strong&gt;permet de demander à tidy d'identer le code, et l'option &lt;strong&gt;&lt;em&gt;-asxhtml &lt;/em&gt;&lt;/strong&gt;précise que l'on souhaite avoir du code xhtml ( on aurait pu utiliser -ashtml pour avoir du html )&lt;/p&gt;
&lt;p&gt;Pour plus d'informations: &lt;em&gt;$ man tidy&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pour installer tidy &lt;/strong&gt;, simplement &lt;em&gt;$ sudo apt-get install tidy&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Notez que tidy est un formidable outil qui vous servira à moultes choses comme la &quot;réparation&quot; d'un fichier mal écrit, plein d'erreur.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>My Jamendo Favorites albums :-)</title>
    <link>http://blog.photozite.info/index.php/post/2007/08/05/My-Jamendo-Favorites-albums-%3A-</link>
    <guid isPermaLink="false">urn:md5:b2bce016a660c69b01007febc07f7269</guid>
    <pubDate>Sun, 05 Aug 2007 11:11:00 +0200</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Web</category>
        <category>david tmx</category><category>jamendo</category><category>libre</category><category>musique</category><category>poutre</category><category>web</category>    
    <description>    Vous conaissiez &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.jamendo.com/fr/&quot;&gt;&lt;strong&gt;Jamendo&lt;/strong&gt;&lt;/a&gt; ?&amp;nbsp; &lt;br /&gt;Vous savez, ce site ou on trouve des milliers d'heures de musique libre !&lt;object data=&quot;http://www.jamendo.com/get/track/list/album/id/playerpage/?item_o=random&amp;amp;n=all&amp;amp;player_height=170&amp;amp;player_refuid=104472&amp;amp;player_shuffle=1&amp;amp;player_type=xspfplayer_extended&amp;amp;player_width=350&amp;amp;playercode_type=generic&amp;amp;subset=user_star&amp;amp;uid=104472&quot; style=&quot;border: 0 none ; width: 350px; height: 170px;&quot; type=&quot;text/html&quot; height=&quot;170&quot; width=&quot;350&quot;&gt;&lt;br /&gt;&lt;/object&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>PHP: Introduction au design patterns, partie 1: Singleton</title>
    <link>http://blog.photozite.info/index.php/post/2007/04/21/PHP%3A-Introduction-au-design-patterns-partie-1%3A-Singleton</link>
    <guid isPermaLink="false">urn:md5:11e72cdf3d85815694d93500d1a21711</guid>
    <pubDate>Sat, 21 Apr 2007 13:18:00 +0200</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>php</category><category>programmation</category><category>web</category>    
    <description>    &lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;Commence ici une petite serie de billets sur les &quot;design patterns&quot;, les motifs de conception en français. Les motifs de conception ne sont rien d'autre que des solutions toutes prêtes à des problèmes couramment rencontrés, il s'agit de morceaux de code, des &quot;squelettes&quot; prêts à remplir leur fonction (variable) et à être adaptés a votre situation.&lt;br /&gt;&lt;br /&gt;La quasi-totalité des design patterns ne dépendent pas d'un langage et peuvent être adaptés à n'importe quel langage moyennant l'adaptation de la syntaxe. Bien évidemment, un design pattern proposant une solution orientée objet ne sera valable que pour un language orienté objet, etc..&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Singleton: Utilité&lt;/h2&gt;
&lt;br /&gt;
Le motif de conception nommé &quot;singleton&quot; est sans conteste un des plus simples à mettre en oeuvre et à comprendre, c'est aussi un des plus utilisés et les exemples de singleton pullulent sur le web, d'ailleurs, j'y mets là mon grain de sel &lt;img src=&quot;/themes/knoodrake3/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Destiné a la programmation orientée objet, il permet de n'avoir toujours qu'une seule et unique instance d'un objet quel que soit le nombre de fois où l'on en a besoin.&lt;br /&gt;Une situation typique et courante est la connection a une BDD (Base De Données): en général, vous ne voulez avoir pour toute l'exécution du script qu'une unique connection a la BDD même si vous faites appel à votre classe de gestion de BDD a maintes reprises et dans différents contextes. &lt;br /&gt;&lt;br /&gt;Un autre cas pourrait être le suivant: Vous utilisez un ensemble de classes par le biais d'une autre classe, par exemple, votre classe de gestion de BDD ainsi que votre classe de gestion d'utilisateur sont accessibles toutes deux au travers de la classe &quot;&lt;em&gt;moteur&lt;/em&gt;&quot;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$moteur-&amp;gt;bdd-&amp;gt;query_sql()&lt;br /&gt;$moteur-&amp;gt;users-&amp;gt;is_online();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Dans un tel contexte, vous voudriez sans doute là aussi n'avoir qu'une unique instance de la classe &quot;&lt;em&gt;moteur&lt;/em&gt;&quot;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;resultat recherché&lt;/h2&gt;
&lt;br /&gt;
Afin d'utiliser toujours la même instance d'une classe &quot;&lt;em&gt;BaseSql&lt;/em&gt;&quot; par exemple, une solution pourrait être de l'instantiser une première fois lors de l'initialisation de votre script puis de faire passer la référence de l'objet de classe en classe de la sorte&lt;code&gt;&lt;br /&gt;&lt;br /&gt;class MaClasse_A &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;private $BaseSql;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;__construct (&amp;amp;InstanceBDD) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;BaseSql =&amp;amp; $InstanceBDD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uneFonction () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $requete = &quot;SELECT * FROM `MaTable` WHERE 1&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  $this-&amp;gt;BaseSql-&amp;gt;query_sql($requete);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Mais cette solution n'est vraiment pas pratique ! car elle vous oblige à appeler votre classe en fournissant en argument l'instance de &lt;em&gt;$BaseSql:&lt;br /&gt;&lt;/em&gt;&lt;code&gt;$classA = new MaClasse_A ($BaseSql);&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Mais surtout, cela devient vraiment vraiment pénible dès qu'il est question d'héritage et de collaboration entre les classes ! voyez l'exemple ci-dessous:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;class MaClasse_A {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __construct (&amp;amp;instanceBDD) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  $this-&amp;gt;BaseSql =&amp;amp; $InstanceBDD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  ... plein de methodes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getUserInscriptionDate () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $classeDate = new DATE ($this-&amp;gt;BaseSql);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  return $classeDate-&amp;gt;userInstription();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class DATE {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __construct (&amp;amp;$instanceBDD) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  $this-&amp;gt;bdd =&amp;amp; $instanceBDD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; userInscription() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  /* &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Là c'était juste pour une classe qui se sert d'une autre classe, mais imaginez si cette même autre classe se sert elle-même d'une autre classe, puis que cette autre classe se serve de 4 autres classes, et ces 4 autres de 2 autres, etc.. Il faudra veiller à chaque fois que l'on a besoin de &lt;em&gt;BASESQL&lt;/em&gt; à prendre la référence de son instance, bien veiller à toujours passer l'instance à d'autres classes, etc.. en d'autres mots, croyez-moi: ca devient le bordel !&lt;br /&gt;&lt;br /&gt;LA solution qui serait élégante serait, de tout simplement, et à chaque fois que l'on a besoin d'utiliser la classe &lt;em&gt;BASESQL&lt;/em&gt;, faire:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;/* quelque part dans le code.. dans une classe ou n'importe ou */&lt;br /&gt;&lt;br /&gt;$basesql = BASESQL::getInstance();&amp;nbsp;&amp;nbsp;&amp;nbsp; // et mainteant on fait ce qu'on veut&lt;br /&gt;$basesql-&amp;gt;methodeXYZ();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; // et si on fait a nouveau&lt;br /&gt;$Autre = BASESQL::getInstance();&lt;br /&gt;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; et ben on se retrouve avec toujours la même instance,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $basesql et $Autre contiendront la même instance de BASESQL&lt;br /&gt;*/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;le motif Singleton le permet en 2 ou 3 lignes.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Mise en Oeuvre&lt;/h2&gt;
&lt;br /&gt;
La classe qui ne devra être instantisée qu'une seule fois devra être comme ceci:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;class BASESQL {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static $instance;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ...some code */&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static getInstance ()&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  if (is_null(self::instance)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp; self::instance = new BASESQL (/* ..some args */ );&amp;nbsp;&amp;nbsp;  }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  return self::instance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ...some code */&lt;br /&gt;}&lt;/code&gt;&lt;h3&gt;Explication:&lt;/h3&gt;
Lorsque vous faites un appel à la methode &lt;em&gt;getInstance()&lt;/em&gt; comme ceci:&lt;code&gt;&lt;br /&gt;$BaseSql = BASESQL::getInstance();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;La méthode regarde si la propriété &lt;em&gt;$Instance&lt;/em&gt; est vide ( nulle ), si elle est vide, elle y affecte une nouvelle instance de &lt;em&gt;BASESQL&lt;/em&gt; ( donc d'elle-même ), sinon, si elle n'est pas nulle, c'est qu'elle contient déja une instance d'elle-même précédemment créée, donc rien à faire.&lt;br /&gt;Elle finit par retourner &lt;em&gt;$Instance&lt;/em&gt; qui dans tous les cas contiendra donc une instance de &lt;em&gt;BASESQL&lt;/em&gt;.&lt;br /&gt;Ainsi, si &lt;em&gt;BASESQL&lt;/em&gt; est déja instantisée on en transmet l'instance, sinon on instantise (et le prochain appel de la method &lt;em&gt;getInstance&lt;/em&gt; transmettra cette instance qui vient d'être faite ) et on transmet.&lt;br /&gt;&lt;br /&gt;La méthode &lt;em&gt;getInstance()&lt;/em&gt; et la propriété &lt;em&gt;$Instance&lt;/em&gt; sont publiques et statiques dans le but d'être accessibles par tout le monde et ce sans avoir besoin que la classe ait été déjà instantisée (logique, c'est le but ! )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;Des questions ? des suggestions ? des conseils ?&amp;nbsp; n'hésitez pas a vous servir des commentaires, ils sont là pour ça, ou de la page contact (cf. menu a droite) pour un mail.&lt;/em&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;em&gt;Le prochain billet traitera du motif Registry ou du motif Factory.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>MAO et Acousmatique: Le SCRIME</title>
    <link>http://blog.photozite.info/index.php/post/2007/03/03/Le-SCRIME</link>
    <guid isPermaLink="false">urn:md5:7dc237fec6bee70d512494a31627043a</guid>
    <pubDate>Sat, 03 Mar 2007 01:43:00 +0100</pubDate>
    <dc:creator>compuls</dc:creator>
        <category>Divers</category>
        <category>acousmatique</category><category>audio</category><category>informatique</category><category>ircam</category><category>mao</category><category>musique</category><category>scrime</category><category>web</category>    
    <description>    &lt;p&gt;Je conseil un petit détour à cette adresse à ceux qui s'intéressent la création musicale par informatique, à la recherche en musique ou à l'acousmatique le site de la &lt;em&gt;SCRIME&lt;/em&gt;: &lt;a hreflang=&quot;fr&quot; href=&quot;http://scrime.labri.fr&quot;&gt;http://scrime.labri.fr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je conseil aussi, bien évidament, le site de l'&lt;em&gt;IRCAM&lt;/em&gt; (&lt;strong&gt;I&lt;/strong&gt;nstitut de &lt;strong&gt;R&lt;/strong&gt;echerche et de &lt;strong&gt;C&lt;/strong&gt;oordination &lt;strong&gt;A&lt;/strong&gt;coustique et &lt;strong&gt;M&lt;/strong&gt;usicale): &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.ircam.fr/&quot;&gt;http://www.ircam.fr/&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>PHP: Detection de la langue du visiteur</title>
    <link>http://blog.photozite.info/index.php/post/2007/02/21/PHP%3A-Detection-de-la-langue-du-visiteur</link>
    <guid isPermaLink="false">urn:md5:46b69385c54910594d52b84ad14bff93</guid>
    <pubDate>Wed, 21 Feb 2007 13:46:00 +0100</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>informatique</category><category>php</category><category>programmation</category><category>web</category>    
    <description>    &lt;p&gt;Comment puis-je détécter la langue du visiteur pour éventuelement le rediriger vers tel ou tel version de mon site ?&lt;/p&gt;
Une des variables superglobales de PHP est la variable &lt;em&gt;$_SERVER &lt;/em&gt;( ou &lt;var&gt;$HTTP_SERVER_VARS&lt;/var&gt; pour les versions de php anterieures a 4.1 ). Comme c'est une variable super globale, nul besoin de la déclarer d'aucune manière, elle sera accésible n'importe quand et n'importe ou.&lt;br /&gt;Dans cette variable (un tableau en fait) on va trouver les informations contenus dans
&lt;code&gt; $_SERVER&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;'HTTP_ACCEPT_LANGUAGE'&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;]&lt;/span&gt;&lt;/code&gt;
, ce qui donne quelque chose comme &lt;code&gt;&quot;fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3&quot; &lt;/code&gt;(une chaine de caractère).&lt;br /&gt;&lt;br /&gt;Donc à partir de la, plusieurs solutions:&lt;br /&gt;De nombreuses bibliothèques peuvent prendre en charge le &quot;décriptage&quot; de cette chaine comme par exemple l'illustre &lt;a hreflang=&quot;en&quot; href=&quot;http://pecl.php.net/&quot;&gt;PECL&lt;/a&gt;. Voir la fonction &lt;a hreflang=&quot;en&quot; href=&quot;http://fr3.php.net/manual/fr/function.http-negotiate-language.php&quot;&gt;http_negociate_language.&lt;/a&gt;&lt;br /&gt;Une autre possibilité, moins éfficace mais qui évite d'installer une librairie tièrce, c'est de ranger tout les morceaux de la chaine dans un tableau et de ne prendre en compte que le premier élement (qui est la langue par defaut ) , comme dans l'exemple que je vous propose:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$lang &lt;span class=&quot;kw&quot;&gt;=&lt;/span&gt; explode&lt;span class=&quot;kw&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;,&lt;/span&gt;$_SERVER&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;HTTP_ACCEPT_LANGUAGE&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;]);&lt;br /&gt;if ((&lt;/span&gt;$langs&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;0&lt;span class=&quot;kw&quot;&gt;] ==&lt;/span&gt; &lt;span class=&quot;st&quot;&gt;&quot;en&quot;&lt;/span&gt; &lt;span class=&quot;kw&quot;&gt;)|(&lt;/span&gt;$lang&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;0&lt;span class=&quot;kw&quot;&gt;]==&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;en-us&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;))&lt;/span&gt;&lt;br /&gt;header&lt;span class=&quot;kw&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;Location: http://monsite.versionAnglaise.com&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;Pour information, la detection ainsi qu'une éventuelle redirection peuvent aussi s'éffectuer simplement avec les entêtes html, ou bien encore à l'aide de Javascript.&lt;br /&gt;&lt;br /&gt;Enfin, si redirection il y à, il est très important de toujours laisser la possibilité au visiteur de choisir lui-même la version du site qu'il souhaite visiter. Ainsi, pensez à mettre (et bien en évidence) un lien vers le site dans les autres langues disponibles.&lt;br /&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>