<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0"><channel><title>delphiki - Lack of Inpiration</title><link>http://www.lackofinspiration.com/</link><description>delphiki website</description><item><title>Ne pas logger certains scripts dans l'access log d'Apache</title><link>http://www.lackofinspiration.com/news-3-116-ne-pas-logger-certains-scripts-dans-l-access-log-d-apache.html</link><pubDate>Fri, 01 Mar 2013 12:46:07 GMT</pubDate><description>Il peut être parfois utile de ne pas logger certains scripts dans les &lt;a href=&quot;http://httpd.apache.org/docs/2.2/fr/logs.html#accesslog&quot;&gt;access log&lt;/a&gt; d'Apache, histoire de ne pas faire gonfler ces derniers trop vite, ou tout simplement parce que ces logs ne nous sont d'aucune utilité.

Je prends par exemple le cas d'un script ajax qui va appeler régulièrement une page (dans le cadre d'un système de notifications, de shoutbox, etc.). S'il y a beaucoup de monde connecté sur le site en même temps, même s'ils sont inactifs, les access logs vont se remplir.

L'idée est donc de dire à Apache de ne pas logger les appels à tel ou tel script (ou à l'inverse de le faire uniquement pour ceux-ci).

Pour ce faire, nous allons utiliser la &lt;a href=&quot;http://httpd.apache.org/docs/current/mod/mod_setenvif.html#setenvif&quot;&gt;directive SetEnvIf&lt;/a&gt; du module &lt;em&gt;mod_setenvif&lt;/em&gt; d'Apache, ansi que la &lt;a href=&quot;http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#customlog&quot;&gt;directive CustomLog&lt;/a&gt;.

Son utilisation est relativement simple. Il vous suffit d'éditer votre fichier vhost ou de configuration, et de placer la directive comme suit, &lt;strong&gt;avant toute déclaration d'un &lt;em&gt;CustomLog&lt;/em&gt;&lt;/strong&gt; :
&lt;/p&gt;&lt;pre class=&quot;brush: bash&quot;&gt;SetEnvIf Request_URI &quot;my_page.php$&quot; donotlog&lt;/pre&gt;&lt;p&gt;
Cette ligne permet de définir une variable d'environnement en fonction de la requête.
Dans notre cas, on dit à Apache de créer la variable &quot;donotlog&quot; dans le cas où l'URL appelée est &quot;my_page.php&quot;.

C'est cette variable qui va nous permettre de logger ou non l'appel.
Et pour ça, il suffit d'ajouter un 3 ème argument à la directive &lt;em&gt;CustomLog&lt;/em&gt; : une variable d'environnement à tester.
&lt;/p&gt;&lt;pre class=&quot;brush: bash&quot;&gt;SetEnvIf Request_URI &quot;my_page.php$&quot; donotlog

CustomLog /dev/null env=donotlog // on jette à la poubelle tous les logs d'appels
CustomLog /var/log/apache2/access_atelier_dev.log combined env=!donotlog // on garde tous les appels où &quot;donotlog&quot; n'est pas défini&lt;/pre&gt;&lt;p&gt;
Évidement, vous n'êtes pas limité à une seule condition, vous pouvez mettre plusieurs &lt;em&gt;SetEnvIf&lt;/em&gt; à la suite et vous pouvez aussi en faire l'usage inverse (= ne logger que les appels à certaines pages).

P-S. : n'oubliez pas de redémarrer Apache pour que les modifications prennent effet !</description></item><item><title>Poster sur le mur d'une Fan Page via l'API Graph de Facebook</title><link>http://www.lackofinspiration.com/news-3-114-poster-sur-le-mur-d-une-fan-page-via-l-api-graph-de-facebook.html</link><pubDate>Wed, 19 Oct 2011 15:01:11 GMT</pubDate><description>&lt;strong&gt;MàJ du 7 décembre 2011&lt;/strong&gt; : modification de la partie sur la récupération de l'access_token, ce qui corrige le problème où seul l'administrateur de la page pouvait voir les messages postés.
Les &lt;a href=&quot;http://www.delphiki.com/facebookGraphAPI/sources.zip&quot;&gt;sources&lt;/a&gt; ont été mises à jour en conséquence.

&lt;strong&gt;Note&lt;/strong&gt; : Ce tutoriel est une mise à jour de celui que j'avais fait &lt;a href=&quot;http://www.lackofinspiration.com/news-3-109-poster-un-message-sur-le-mur-d-une-fan-page-via-l-api-facebook.html&quot;&gt;il y a bientôt un an&lt;/a&gt;, utilisant l'API REST de Facebook.

Mon ancien tutoriel n'étant plus valable (on ne peut plus autoriser une application sur une page de la manière dont je l'ai décrite), je vous fait part aujourd'hui de la nouvelle façon de procéder pour arriver au même résultat : poster un message sur le mur d'une Fan Page en utilisant l'API (&quot;Graph&quot; cette fois) de Facebook.

Je considère que vous avez déjà créé votre page ou que vous êtes administrateur de la page sur laquelle vous voulez poster.

&lt;h3 style=&quot;color:#cc9900;font-style:italic;&quot;&gt;Prérequis&lt;/h3&gt;
Avant tout, vous devez télécharger le &lt;a href=&quot;https://developers.facebook.com/docs/reference/php/&quot;&gt;SDK PHP de Facebook&lt;/a&gt; qui permet de manipuler l'API Graph, directement &lt;a href=&quot;https://github.com/facebook/php-sdk&quot;&gt;sur GitHub&lt;/a&gt;.

Vous pouvez télécharger le SDK soit via Git :
&lt;/p&gt;&lt;pre class=&quot;brush: bash&quot;&gt;git clone https://github.com/facebook/php-sdk.git&lt;/pre&gt;&lt;p&gt;
Ou sous forme d'archive sur &lt;a href=&quot;https://github.com/facebook/php-sdk/downloads&quot;&gt;cette page&lt;/a&gt;.

Les seuls fichiers dont nous avons besoin sont les fichiers du dossier &lt;strong&gt;src&lt;/strong&gt;.

&lt;h3 style=&quot;color:#cc9900;font-style:italic;&quot;&gt;Création de l'application&lt;/h3&gt;
Nous allons commencer par créer et configurer l'application qui vous servira d'intermédiaire entre vos scripts PHP et votre Fan Page.
Dans un premier temps, allez sur &lt;a href=&quot;https://developers.facebook.com/apps&quot;&gt;cette page&lt;/a&gt; et cliquez sur &lt;strong&gt;Créer une application&lt;/strong&gt;.
Choisissez un &lt;strong&gt;nom&lt;/strong&gt; et un &lt;strong&gt;namespace&lt;/strong&gt; comme bon vous semble (le namespace est unique, si une autre application a le même, Facebook vous demandera d'un choisir un autre).
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;aclimg&quot; href=&quot;http://www.lackofinspiration.com/img/upload/graph_api_create_app.png&quot;&gt;&lt;img class=&quot;clickimg&quot; src=&quot;http://www.lackofinspiration.com/img/upload/miniatures/mini_graph_api_create_app.png&quot; alt=&quot;graph_api_create_app.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;
On vous demandera de remplir un CAPTCHA, puis vous devriez atterrir sur une page semblable à celle-ci :
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;aclimg&quot; href=&quot;http://www.lackofinspiration.com/img/upload/graph_api_app_summary.png&quot;&gt;&lt;img class=&quot;clickimg&quot; src=&quot;http://www.lackofinspiration.com/img/upload/miniatures/mini_graph_api_app_summary.png&quot; alt=&quot;graph_api_app_summary.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;

&lt;h3 style=&quot;color:#cc9900;font-style:italic;&quot;&gt;Récupération de l'« access token »&lt;/h3&gt;
Si vous voulez que votre application puisse poster sur le mur de votre page, il faut que cette dernière y soit autorisée.
Pour cela, il faut récupérer ce qu'on appelle un « &lt;em&gt;access token&lt;/em&gt; ». Il s'agit d'une clé permettant d'authentifier l'application auprès de la page.

Pour récupérer cette clé, voici la marche à suivre.
Commencez par créer un fichier PHP (que j'ai appelé &lt;em&gt;get_token.php&lt;/em&gt;) qui inclut les fichiers du SDK PHP de Facebook et qui contient quelques paramètres de configuration :

&lt;/p&gt;&lt;pre class=&quot;brush: php&quot;&gt;/* on inclut le fichier du SDK */
require_once('php-sdk/facebook.php');

/* l'id et la clé secrète de votre application sont disponibles sur la page de configuration de celle-ci */
$app_config = array(
  'appId' =&gt; 'APP_ID', 
  'secret' =&gt; 'APP_SECRET',
  'cookie' =&gt; true
);
/* Pour connaitre l'id de votre page, allez sur celle-ci et regardez son URL : https://www.facebook.com/pages/&lt;Titre de votre page&gt;/&lt;ID de votre page&gt;  */
$page_config = array(
  'page_id' =&gt; 'PAGE_ID'
);&lt;/pre&gt;&lt;p&gt;

Ajoutez ensuite ces quelques lignes (les explications sont dans les commentaires) :
&lt;/p&gt;&lt;pre class=&quot;brush: php&quot;&gt;$facebook = new Facebook($app_config);
/* on récupère les informations de l'utilisateur connecté à Facebook */
$user = $facebook-&gt;getUser();

/* si connecté */
if($user){
  try{
    $accounts = $facebook-&gt;api('/me/accounts');
    echo '&lt;pre&gt;';
    print_r($accounts); /* on affiche les informations retournées */
  }
  catch (FacebookApiException $e){
    error_log($e);
    $user = null;
  }
}

if($user){
  $logoutUrl = $facebook-&gt;getLogoutUrl();
  echo '&lt;a href=&quot;'.$logoutUrl.'&quot;&gt;Log Out&lt;/a&gt;';
}
else{
  $login_params = array(
    'scope' =&gt; 'manage_pages,publish_stream,offline_access' /* paramètres permettant de récupérer le token, offline_access permet d'utiliser le token même si vous n'êtes pas connecté directement (ex. : avec un cron) */
  );
  $loginUrl = $facebook-&gt;getLoginUrl($login_params);
  echo '&lt;a href=&quot;'.$loginUrl.'&quot;&gt;Login&lt;/a&gt;';
}&lt;/pre&gt;&lt;p&gt;

Avant de lancer ce script, il faut d'abord spécifier l'URL de votre script PHP dans les paramètres de votre application.
Pour cela, retournez sur la page de configuration de votre application, et remplissez correctement le champ &lt;strong&gt;Site web&lt;/strong&gt;, comme ceci :
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;aclimg&quot; href=&quot;http://www.lackofinspiration.com/img/upload/graph_api_app_callback.png&quot;&gt;&lt;img class=&quot;clickimg&quot; src=&quot;http://www.lackofinspiration.com/img/upload/miniatures/mini_graph_api_app_callback.png&quot; alt=&quot;graph_api_app_callback.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;

Ceci indique sur quelle URL retourner après avoir autorisé l'application.
Je n'ai pas testé, cependant je pense que une adresse en &lt;strong&gt;http://localhost/&lt;/strong&gt; devrait fonctionner.

Il est maintenant temps de vous rendre sur votre page PHP.
Si tout se passe bien, vous devriez avoir un lien &lt;strong&gt;Login&lt;/strong&gt;, cliquez dessus.
Vous devriez atterrir sur cette page, cliquez sur &lt;strong&gt;Connexion&lt;/strong&gt; :
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;aclimg&quot; href=&quot;http://www.lackofinspiration.com/img/upload/graph_api_app_connect.png&quot;&gt;&lt;img class=&quot;clickimg&quot; src=&quot;http://www.lackofinspiration.com/img/upload/miniatures/mini_graph_api_app_connect.png&quot; alt=&quot;graph_api_app_connect.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;
Puis celle-ci, cliquez sur &lt;strong&gt;Autoriser&lt;/strong&gt; :
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a class=&quot;aclimg&quot; href=&quot;http://www.lackofinspiration.com/img/upload/graph_api_app_allow.png&quot;&gt;&lt;img class=&quot;clickimg&quot; src=&quot;http://www.lackofinspiration.com/img/upload/miniatures/mini_graph_api_app_allow.png&quot; alt=&quot;graph_api_app_allow.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;

Une fois ces étapes effectuées, vous avez correctement autorisé la gestion de votre page, par votre application, et vous êtes redirigé vers votre script PHP, qui devrait vous afficher votre &lt;em&gt;access token&lt;/em&gt; (une très longue chaine de caractères) !

&lt;/p&gt;&lt;pre class=&quot;brush: bash&quot;&gt;Array
(
  [data] = Array
    (
      [0] = Array
        (
          [name] = Tuto Graph API page
          [access_token] = VotreAccessTokenQuiEstUneTresLongueChaineDeCaracteres
          [category] = Tv channel
          [id] = 304493389565701
        )
        /* ... */
    )
)&lt;/pre&gt;&lt;p&gt;

Et voilà, le tour est joué, vous avez désormais récupéré le token qui vous permettra de poster sur votre page.
Voyons maintenant comment l'utiliser.

&lt;h3 style=&quot;color:#cc9900;font-style:italic;&quot;&gt;Poster un message sur la Fan Page&lt;/h3&gt;
Rien de plus simple si vous avez déjà lu mon &lt;a href=&quot;http://www.lackofinspiration.com/news-3-109-poster-un-message-sur-le-mur-d-une-fan-page-via-l-api-facebook.html&quot;&gt;tuto précédent&lt;/a&gt;.

Reprenez les paramètres de votre application et de votre page, sans oublier votre &lt;strong&gt;token&lt;/strong&gt; :
&lt;/p&gt;&lt;pre class=&quot;brush: php&quot;&gt;require_once('php-sdk/facebook.php');

$app_config = array(
  'appId' =&gt; 'APP_ID',
  'secret' =&gt; 'APP_SECRET'
);
$page_config = array(
  'access_token' =&gt; 'ACCESS_TOKEN', /* n'oubliez pas cette entrée par rapport au tableau dans get_token.php */
  'page_id' =&gt; 'PAGE_ID'
);

$facebook = new Facebook($app_config);&lt;/pre&gt;&lt;p&gt;

Puis rajoutez ces quelques lignes, qui suffisent à poster le message :
&lt;/p&gt;&lt;pre class=&quot;brush: php&quot;&gt;$params = array(
  'access_token' =&gt; $page_config['access_token'],
  'message' =&gt; 'Message de test',
  'name' =&gt; 'Nom de test',
  'caption' =&gt; 'Légende de test',
  'link' =&gt; 'http://www.google.fr',
  'description' =&gt; 'Description de mon message !',
  'picture' =&gt; 'http://www.informanews.net/imagenews/panasonicTV_Google.jpg',
  'actions' =&gt; array(
    array('name' =&gt; &quot;Nom de l'action&quot;, 'link' =&gt; 'http://www.google.fr/')
  )
);

$post_id = $facebook-&gt;api('/'.$page_config['page_id'].'/feed','post',$params);&lt;/pre&gt;&lt;p&gt;

Vous n'avez plus qu'à aller sur votre fan page pour admirer le résultat ! :)

Les scripts que j'utilise dans ce tuto sont disponibles à &lt;a href=&quot;http://www.delphiki.com/facebookGraphAPI/sources.zip&quot;&gt;cette adresse&lt;/a&gt; pour les fainéants.

Si vous avez des questions, les commentaires sont là pour ça, ou bien &lt;a href=&quot;https://twitter.com/delphiki&quot;&gt;@delphiki&lt;/a&gt;.

Amusez-vous bien. ;-)</description></item><item><title>Du nouveau pour l'API Colissimo</title><link>http://www.lackofinspiration.com/news-3-113-du-nouveau-pour-l-api-colissimo.html</link><pubDate>Thu, 13 Oct 2011 15:11:08 GMT</pubDate><description>Il y a quelques mois, je vous avais rédigé un petit article sur l'&lt;a href=&quot;http://www.lackofinspiration.com/news-3-110-l-api-cachee-de-colissimo.html&quot;&gt;API « cachée » de Colissimo&lt;/a&gt;.

Or cette dernière s'est très vite retrouvée non fonctionnelle, La Poste ayant déclaré qu'une API « publique » était prévue. Sauf que constat 8 mois plus tard : toujours rien.

J'avais un peu oublié cette histoire jusqu'à hier je flânais dans les commentaires de l'article en question.
J'ai alors voulu revérifier les dump TCP de l'application de la poste pour m'apercevoir qu'ils n'avaient absolument pas changés, et pourtant, l'application marchait !

La seule différence entre les appels effectués par l'application mobile et mon script PHP était... l'User Agent !
Et en effet, la solution au problème était bien là.

En forçant un User Agent de smartphone lors de l'appel PHP, on récupère le résultat escompté ! :)

J'ai donc mis à jour la mini-lib pour manipuler l'API. 
Celle-ci est toujours disponible sur &lt;a href=&quot;https://github.com/delphiki/ColissimoAPI&quot;&gt;GitHub&lt;/a&gt;.

Petit changement cela dit lorsque vous voulez récupérer les informations sous forme d'image, il faut désormais un dossier local pour stocker les images en question (voir le &lt;a href=&quot;https://github.com/delphiki/ColissimoAPI/blob/master/README.markdown&quot;&gt;README&lt;/a&gt; dans les sources).

PS : merci à &lt;a href=&quot;https://twitter.com/#!/sp0z&quot;&gt;@sp0z&lt;/a&gt; pour le code de test :)</description></item><item><title>Configurer son serveur pour la lecture audio / vidéo en HTML5</title><link>http://www.lackofinspiration.com/news-3-112-configurer-son-serveur-pour-la-lecture-audio-video-en-html5.html</link><pubDate>Thu, 29 Sep 2011 08:31:16 GMT</pubDate><description>Si des vidéos hébergées sur votre serveur ne s'affichent pas quand vous utilisez la balise &amp;lt;video&amp;gt;, c'est sans doute que votre serveur est mal configuré !

En effet, si votre serveur web ne fournit pas le bon header &lt;strong&gt;Content-Type&lt;/strong&gt;, le navigateur ne saura pas qu'il a à faire à un fichier lisible directement avec les balises &lt;strong&gt;HTML5&lt;/strong&gt;.

Pour être sûr que les &lt;strong&gt;MIME types&lt;/strong&gt; sont bons, il suffit d'ajouter ces quelques lignes dans votre fichier &lt;strong&gt;.htaccess&lt;/strong&gt; :
&lt;/p&gt;&lt;pre class=&quot;brush: bash&quot;&gt;AddType audio/webm weba
AddType video/webm webm
AddType video/ogg ogm
AddType video/ogg ogv
AddType video/ogg ogg&lt;/pre&gt;&lt;p&gt;</description></item><item><title>[PHP] Utiliser les sessions juste avant un appel à header('Location: ...')</title><link>http://www.lackofinspiration.com/news-3-111-php-utiliser-les-sessions-juste-avant-un-appel-a-header-location.html</link><pubDate>Thu, 07 Apr 2011 14:48:44 GMT</pubDate><description>Si vous avez déjà eu à faire à ce cas de figure, où vous devez définir une variable de session juste avant un appel à la fonction header() pour changer de page (header('Location: ...');), alors vous avez sans doute remarqué qu'une fois arrivé sur la page, vous n'avez plus aucune trace de votre variable de session !

Pour palier à ce petit problème, il suffit de rajouter à votre URL l'id de la session grâce à la constante &lt;strong&gt;SID&lt;/strong&gt;, comme suit :
&lt;/p&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;?php
$_SESSION['foo'] = 'bar';

header('Location: mypage.php'.SID);&lt;/pre&gt;&lt;p&gt;</description></item></channel></rss>