<?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 Florian Bogey &#187; PHP</title>
	<atom:link href="https://www.blog.florian-bogey.fr/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>https://www.blog.florian-bogey.fr</link>
	<description>// Développeur Web - Administrateur système</description>
	<lastBuildDate>Mon, 03 Mar 2014 18:12:00 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>PHP : Trier un tableau suivant la valeur d&#8217;une clé</title>
		<link>https://www.blog.florian-bogey.fr/php-trier-tableau-suivant-valeur-clef.html</link>
		<comments>https://www.blog.florian-bogey.fr/php-trier-tableau-suivant-valeur-clef.html#comments</comments>
		<pubDate>Mon, 20 May 2013 20:25:56 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[tableau]]></category>
		<category><![CDATA[uasort]]></category>
		<category><![CDATA[usort]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=534</guid>
		<description><![CDATA[Aujourd&#8217;hui un petit billet concernant le PHP et plus particulièrement le tri au sein des tableaux. Nous allons voir comment trier un tableau suivant la valeur associée à une clef. L&#8217;objectif est ici de trier un tableau suivant la valeur d&#8217;une clé, cela s&#8217;adresse donc à un tableau multidimensionnel (deux dimensions pour être précis), pour [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui un petit billet concernant le PHP et plus particulièrement le tri au sein des tableaux. Nous allons voir comment trier un tableau suivant la valeur associée à une clef.</p>
<p><span id="more-534"></span></p>
<p>L&rsquo;objectif est ici de trier un tableau suivant la valeur d&rsquo;une clé, cela s&rsquo;adresse donc à un tableau multidimensionnel (deux dimensions pour être précis), pour ce faire nous utiliserons la fonction <strong>usort</strong>.</p>
<p>Prenons par exemple ce tableau et admettons que nous souhaitons le tirer par rapport aux valeurs de la clé &laquo;&nbsp;val&nbsp;&raquo;</p>
<pre class="brush: php; title: ; notranslate">
$a = array(
'0' =&gt; array('val' =&gt; 10, 'text' =&gt; 'mon texte 10'),
'1' =&gt; array('val' =&gt; 1, 'text' =&gt; 'mon texte 1'),
'2' =&gt; array('val' =&gt; 3, 'text' =&gt; 'mon texte 3'),
'3' =&gt; array('val' =&gt; -2, 'text' =&gt; 'mon texte -2'),
'4' =&gt; array('val' =&gt; 8, 'text' =&gt; 'mon texte 8'),
'5' =&gt; array('val' =&gt; 50, 'text' =&gt; 'mon texte 50'),
'6' =&gt; array('val' =&gt; 5, 'text' =&gt; 'mon texte 5'),
);
</pre>
<p>Nous allons donc utiliser la fonction <strong>usort</strong> qui permet de trier un tableau suivant une fonction que l&rsquo;on définit. Nous allons donc créer une fonction comparant les clés.</p>
<pre class="brush: php; title: ; notranslate">
	function fonctionComparaison($a, $b){
		return $a['val'] &gt; $b['val'];
	}
</pre>
<p>Puis nous l&rsquo;appelons de la manière suivante :</p>
<pre class="brush: php; title: ; notranslate">usort($a, 'fonctionComparaison');</pre>
<p>Pour la même utilisation au sein d&rsquo;une classe (si &laquo;&nbsp;fonctionComparaison&nbsp;&raquo; était une des méthodes de la classe), le second paramètre est alors un tableau :</p>
<pre class="brush: php; title: ; notranslate">usort($a, array($this,'fonctionComparaison'));</pre>
<p>Et voici le résultat :</p>
<p><img class="size-full wp-image-541" style="border: 0 none;" alt="PHP : Trier un tableau suivant la valeur d'une clé" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/05/php-usort-array-uasort.jpg" width="393" height="450" /></p>
<p>A noter que les clés originales ont été remplacées par de nouvelles. Pour conserver les clés, il aurait fallu utiliser la fonction <strong>uasort</strong> qui fonctionne exactement de la même manière, mais qui conserve les clés.</p>
<p><a title="Photo" href="http://commons.wikimedia.org/wiki/File:ElePHPant_studying_notes_from_SugarCon_2007.jpg" target="_blank">Photo</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/php-trier-tableau-suivant-valeur-clef.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installer un certificat SSL sous WAMP</title>
		<link>https://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html</link>
		<comments>https://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html#comments</comments>
		<pubDate>Thu, 14 Mar 2013 09:26:12 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Windows]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[certificat]]></category>
		<category><![CDATA[certificat ssl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Wamp]]></category>
		<category><![CDATA[Wampserver]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=411</guid>
		<description><![CDATA[Installer un certificat SSL sous un serveur Wamp (Sous Windows donc) est relativement simple et ne prend que quelques minutes, nous allons donc voir ici comment générer un certificat Auto-signé avec OpenSSL et comment l’installer. A noter que cette manipulation ne pourra remplacer un vrai certificat acheté auprès d’une autorité de certification. Une remarque avant [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Installer un certificat SSL sous un serveur Wamp (Sous Windows donc) est relativement simple et ne prend que quelques minutes, nous allons donc voir ici comment générer un certificat Auto-signé avec OpenSSL et comment l’installer. A noter que cette manipulation ne pourra remplacer un vrai certificat acheté auprès d’une autorité de certification.</p>
<p><span id="more-411"></span></p>
<p><strong>Une remarque</strong> avant de commencer, selon votre version d’Apache les chemins vers les différents fichiers/dossiers peuvent changer. <strong>Cette documentation a été écrite avec Apache2.2.21.</strong></p>
<p>Les premières étapes sont des commandes DOS, la première chose est donc d’ouvrir une invite de commande (Démarrer -&gt; Exécuter -&gt; cmd -&gt; OK)</p>
<h2>1 &#8211; Se rendre dans le répertoire de d’apache</h2>
<pre class="brush: bash; title: ; notranslate">cd C:\wamp\bin\apache\Apache2.2.21\bin</pre>
<h2>2 &#8211; Générer le la clef privé</h2>
<p>On va commencer par générer la clé privée, elle se trouvera dans le fichier &laquo;&nbsp;private.key&nbsp;&raquo; ici le chiffrage est de 2048bits.</p>
<pre class="brush: bash; title: ; notranslate">openssl genrsa -aes256 -out private.key 2048</pre>
<p>Si vous rencontrez l’erreur &laquo;&nbsp;L’ordinal 296 …. SSLEAY32.dll&nbsp;&raquo; :</p>
<p><img class="size-full wp-image-417" style="border: 0 none;" alt="openssl-erreur" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/openssl-erreur.jpg" /></p>
<p>La solution est de se rendre sur cette page : <a title="OpenSSL" href="http://slproweb.com/products/Win32OpenSSL.html" target="_blank">http://slproweb.com/products/Win32OpenSSL.html</a> et de télécharger <strong>Win32 OpenSSL v1.0.0k Light</strong> une fois installé il faut se déplacer dans le répertoire/sous-répertoires d’installation afin de copier les fichiers suivants :</p>
<ul>
<li>ssleay32.dll</li>
<li>libeay32.dll</li>
<li>openssl.exe</li>
</ul>
<p>Pour les coller dans le dossier C:\wamp\bin\apache\Apache2.2.21\bin (en confirmant les remplacements). Le problème devrait alors être corrigé et la commande précédente s’exécuter correctement.</p>
<h2>3 &#8211; Supprimer la passphrase</h2>
<p>On va <a title="Supprimer le mot de passe d’un certificat SSL" href="http://www.blog.florian-bogey.fr/supprimer-le-mot-de-passe-dun-certificat-ssl.html" target="_blank">libérer la clé privée</a> de la &laquo;&nbsp;passphrase&nbsp;&raquo; qui la protège.</p>
<pre class="brush: bash; title: ; notranslate">openssl rsa -in private.key -out private.key</pre>
<h2>4 &#8211; Générer le certificat auto-signé</h2>
<p>Nous allons ici générer le certificat auto-signé qui servira à certifier la connexion et à en chiffrer les échanges.</p>
<p>Ici le certificat sera valide 100 ans, remplacez donc 36500 par le nombre de jours de validité du certificat. Ensuite l’invite de commande vous demandera quelques informations libres à vous de les saisir. Notre certificat portera le nom : &laquo;&nbsp;certificat.crt&nbsp;&raquo;</p>
<pre class="brush: bash; title: ; notranslate">openssl req -new -x509 -nodes -sha1 -key private.key
-out certificat.crt -days 36500
-config C:\wamp\bin\apache\apache2.2.21\conf\openssl.cnf</pre>
<p><img class="size-full wp-image-420" style="border: 0 none;" alt="Générer un certificat avec openSSL" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/openssl-certificat.jpg" width="500px" /></p>
<h2>5 &#8211; Copier le certificat et la clef privée</h2>
<p>Maintenant que notre certificat et notre clef privée sont générés il nous faut les stocker sur le serveur. Pour ce faire rendez-vous dans le dossier C:\wamp\bin\apache\Apache2.2.21\conf et créez deux dossiers &laquo;&nbsp;cert&nbsp;&raquo; et &laquo;&nbsp;key&nbsp;&raquo;.</p>
<ul>
<li>Copier certificat.crt dans le dossier &laquo;&nbsp;cert&nbsp;&raquo;</li>
<li>Copier private.key dans le dossier &laquo;&nbsp;key&nbsp;&raquo;</li>
</ul>
<h2>6 &#8211; Édition des fichiers de configurations</h2>
<p>Afin d’installer notre certificat, nous devons éditer trois fichiers de configuration, les deux premiers permettrons d’activer SSL pour Apache et PHP et le troisième permettra d&rsquo;installer le certificat sur le serveur.</p>
<ul>
<li><strong>Editer C:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf</strong></li>
</ul>
<p>Dé-commenter les lignes (enlever le &laquo;&nbsp;#&nbsp;&raquo;) suivantes :</p>
<pre class="brush: bash; title: ; notranslate">LoadModule ssl_module modules/mod_ssl.so</pre>
<p>et</p>
<pre class="brush: bash; title: ; notranslate">Include conf/extra/httpd-ssl.conf</pre>
<ul>
<li><strong>Editer C:\wamp\bin\php\php5.3.8\php.ini</strong></li>
</ul>
<p>Dé-commenter la ligne (enlever le &laquo;&nbsp;;&nbsp;&raquo;) suivante</p>
<pre class="brush: bash; title: ; notranslate">extension=php_openssl.dll</pre>
<ul>
<li><strong>Editer C:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-ssl.conf</strong></li>
</ul>
<p>Rechercher la ligne : <strong>&lt;VirtualHost _default_:443&gt;</strong></p>
<p>Sous cette ligne, effectuer les recherche/remplacement suivant :</p>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;DocumentRoot …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">DocumentRoot &quot;c:/wamp/www/&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;ServerName …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">ServerName localhost:443</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;ErrorLog …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">ErrorLog &quot;c:/wamp/bin/apache/Apache2.2.21/logs/ssl_error.log&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;TransferLog …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">TransferLog &quot;c:/wamp/bin/apache/Apache2.2.21/logs/ssl_access.log&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;SSLCertificateFile …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">SSLCertificateFile &quot;c:/wamp/bin/apache/Apache2.2.21/conf/cert/certificat.crt&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;SSLCertificateKeyFile …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">SSLCertificateKeyFile &quot;c:/wamp/bin/apache/Apache2.2.21/conf/key/private.key&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;&lt;Directory &#8230;&gt;&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">&lt;Directory &quot;c:/wamp/www/&quot;&gt;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;CustomLog …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">CustomLog &quot;C:/wamp/bin/apache/Apache2.2.21/logs/ssl_request.log&quot; \</pre>
<p>Voici quelques explication concernant les paramètres que l&rsquo;on viens de modifier :</p>
<ul>
<li><strong>DocumentRoot</strong> : définit le dossier racine du serveur</li>
<li><strong>ServerName</strong> : définit le nom du serveur et son port d’écoute (443 étant le port SSL par défaut)</li>
<li><strong>ErrorLog</strong> : définit l’emplacement du journal d’erreur</li>
<li><strong>TransferLog</strong> : définit l’emplacement du journal des accès</li>
<li><strong>SSLCertificateFile</strong> : définit l’emplacement du certificat</li>
<li><strong>SSLCertificateKeyFile</strong> : définit l’emplacement de la clef privée</li>
<li><strong>&lt;Directory &#8230;&gt; </strong>: définit les propriétés sur dossier racine</li>
<li><strong>CustomLog</strong> : définit l’emplacement du journal des requêtes</li>
</ul>
<h2>7 &#8211; Vérifier la configuration</h2>
<p>Dans une invite de commande tapez la commande suivante</p>
<pre class="brush: bash; title: ; notranslate">httpd -t</pre>
<p>Ce dernier doit retourner &laquo;&nbsp;Syntax OK&nbsp;&raquo;, si tel n’est pas le cas, il doit y avoir une erreur dans le fichier &laquo;&nbsp;httpd-ssl.conf&nbsp;&raquo;, il faut donc retourner à l’étape précédente et vérifier la configuration.</p>
<h2>8 &#8211; Redémarrer Wamp</h2>
<p>Il faut redémarrer Wamp afin que les différentes modifications soient prises en compte.</p>
<h2>9 &#8211; L’accès à https://localhost/ doit être possible</h2>
<p>Le message suivant nous indique que la connexion n’est pas certifiée, il faut accepter les risques, c’est normal puisque notre certificat est auto-signé. Cette erreur n’apparaîtrait pas si le certificat aurait été acheté auprès d’une autorité de certification.</p>
<p><img class="size-full wp-image-425" style="border: 0 none;" alt="firefox erreur certificat SSL" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/firefox-erreur-certificat.jpg" width="500" /></p>
<p>Voilà, le certificat est installé avec succès.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html/feed</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Détecter une requête AJAX en PHP</title>
		<link>https://www.blog.florian-bogey.fr/detecter-une-requete-ajax-en-php.html</link>
		<comments>https://www.blog.florian-bogey.fr/detecter-une-requete-ajax-en-php.html#comments</comments>
		<pubDate>Fri, 25 Jan 2013 21:12:21 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[detection]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=207</guid>
		<description><![CDATA[L&#8217;AJAX est aujourd&#8217;hui très utilisé dans les applications webs, il peut donc être pratique de détecter si une requête est issue d&#8217;un appel AJAX ou non. Cette détection peut être utile par exemple pour afficher un contenu ou effectuer un traitement suivant si la page est appelée via une requête normale ou une requête AJAX. Il suffit dans le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;<strong>AJAX</strong> est aujourd&rsquo;hui très utilisé dans les applications webs, il peut donc être pratique de détecter si une requête est issue d&rsquo;un appel <strong>AJAX</strong> ou non.</p>
<p>Cette détection peut être utile par exemple pour afficher un contenu ou effectuer un traitement suivant si la page est appelée via une requête normale ou une requête <strong>AJAX</strong>.</p>
<p><span id="more-207"></span></p>
<p>Il suffit dans le code de detecter la présence de la variable <strong>$_SERVER['HTTP_X_REQUESTED_WITH']</strong></p>
<pre class="brush: php; title: ; notranslate">if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &amp;&amp; strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// Traitement pour une requête AJAX
}</pre>
<p>Attention toutefois, la variable ne sera présente que si la requête est initiée via les librairies JavaScript <strong>Jquery</strong>, <strong>Mootools</strong> ou <strong>prototype</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/detecter-une-requete-ajax-en-php.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mobile detect : Détecter les smartphones/tablettes en php</title>
		<link>https://www.blog.florian-bogey.fr/mobiledetect-detecter-les-smartphonestablettes-en-php.html</link>
		<comments>https://www.blog.florian-bogey.fr/mobiledetect-detecter-les-smartphonestablettes-en-php.html#comments</comments>
		<pubDate>Thu, 27 Dec 2012 16:59:43 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[detection]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile detect]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[tablette]]></category>

		<guid isPermaLink="false">http://127.0.0.1/blog/?p=112</guid>
		<description><![CDATA[Avec la multiplication des appareils mobiles (tablettes, smartphones, etc.), il devient de plus en plus souvent nécessaire de détecter ce type d&#8217;appareil (Par exemple : pour les rediriger vers un site optimiser pour la navigation mobile). Mobile Detect est une classe PHP qui permet de faire cela très facilement, en effet une fois la classe [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Avec la multiplication des appareils mobiles (tablettes, smartphones, etc.), il devient de plus en plus souvent nécessaire de détecter ce type d&rsquo;appareil (Par exemple : pour les rediriger vers un site optimiser pour la navigation mobile).</p>
<p><span id="more-112"></span></p>
<p>Mobile Detect est une classe PHP qui permet de faire cela très facilement, en effet une fois la classe incluse, les méthodes portent plutôt bien leurs noms. De plus Mobile Detect permet aussi de connaitre la version du système d’exploitation.</p>
<p>Un petit exemple :</p>
<pre class="brush: php; title: ; notranslate">
include 'Mobile_Detect.php';
$detect = new Mobile_Detect();

if ($detect-&gt;isMobile()){
// Action pour un mobile
}

if($detect-&gt;isTablet()){
// Action pour une tablette
}

if($detect-&gt;isiOS()){
// Action pour un appareil sous iOS
}

if($detect-&gt;isAndroidOS()){
// Action pour un appareil sous Android
}
</pre>
<p>Pour détecter un appareil en particulier, il faudra utiliser les méthodes : <code>isIphone()</code>, <code>isIpad()</code>, <code>isBlackBerry()</code>, <code>isKindle()</code> &#8230;</p>
<p>Pour le téléchargement c&rsquo;est par <a title="Mobile Detect" href="http://mobiledetect.net/" target="_blank">ici</a> (site officiel) ou <a title="Mobile Detect" href="https://github.com/serbanghita/Mobile-Detect" target="_blank">ici</a> (gitHub)</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/mobiledetect-detecter-les-smartphonestablettes-en-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
