Il y a quelques mois, lors de notre déménagement, j'ai trouvé une image rigolote que j'ai utilisée pour illustrer le billet que j'écrivais.


Seulement depuis, cette image semble plaire à plein de gens. A tel point que ce petit blog arrive en premier quand on cherche "demenagement" dans Google Image :-0
Mon problème c'est quand ceux qui la reprennent sur leur blog, ne la copient pas (comme j'avais fait), mais en utilisent l'image qui est chez moi.
En soit, ce n'est pas un drame, mais deux choses :

  • ça me pourri nos statistiques de visites. Je sais que nous n'avons pas beaucoup de visiteurs, mais là, on ne peux même plus le mesurer.
  • ça prend de la bande passante que nous facture NOTRE hébergeur. Vous allez me dire c'est pas grand chose, une image de 9Ko. Quand on arrive à plus de 1000 chargement par mois rien que pour les squatteurs, ça charge quand même l'ardoise de 9Mo ce qui n'est pas si négligeable.

C'est pour cela que j'ai mis en place un petit script qui vérifie la provenance de ceux qui charge cette image. Donc si cette image vous plaît et que vous voulez l'utiliser sur votre site/blog, ça ne me pose pas de problème, mais copiez-la, arrêtez de squatter notre site.
Pour ceux que ça intéresserait, voici le script (il manque quelques détails pour ne pas qu'on me squatte les images à la source):

<?php
function LoadJpeg($imgname)
{
    /* Tente d'ouvrir l'image */
    $im = @imagecreatefromjpeg($imgname);

    /* Traitement en cas d'échec */
    if(!$im)
    {
        /* Création d'une image vide */
        $im  = imagecreatetruecolor(150, 30);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);

        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

        /* On y affiche un message d'erreur */
        imagestring($im, 1, 5, 5, 'Erreur de chargement ' . $imgname, $tc);
    }

    return $im;
}
/* On test l'origine de l'image et on affiche en conséquence */
if (isset($_SERVER[HTTP_REFERER]))
{
        if (isset($_GET['image']) && ereg('famillegeek', $_SERVER[HTTP_REFERER]))
        {
                header('Content-Type: image/jpeg');
                $img = LoadJpeg('/data/images/'.$_GET['image'].'.jpg');
        } else {
                header('Content-Type: image/jpeg');
                $img = LoadJpeg('/data/images/404.jpg');
        }
} else {
        if (isset($_GET['image']))
        {
                header('Content-Type: image/jpeg');
                $img = LoadJpeg($_GET['image'].'.jpg');
        } else {
                header('Content-Type: image/jpeg');
                $img = LoadJpeg('404.jpg');
        }
}
imagejpeg($img);
imagedestroy($img);
?>


Edit : Je viens de découvrir un effet de bord de mon script, les gens qui suivent le blog par les flux RSS ne voient pas l'image attendue, mais une belle 404 :-/
Je vais essayer de corriger le tir.

Edit 2 : Ca y est, j'ai modifié le script, maintenant les flux RSS affichent aussi la bonne image.