20.Exemples de scripts PHP

20.5.Compteur de hits

20.5.1.Introduction

Pour mieux comprendre les attentes de vos visiteurs, en complément de la mesure d'audience, il peut être intéressant de connaître combien de fois les liens que vous proposez ont été visités.

20.5.2.Principe de fonctionnement

Pour parvenir à ce résultat, il convient de remplacer les liens "mis sous surveillance" par un script PHP qui incrementera un compteur avant d'effectivement renvoyer vers la page désirée. On pourra alors par exemple remplacer un lien
<a href="www.phpfacile.com">lien</a>
par
<a href="compteclic.php?url=www.phpfacile.com">lien</a>
La question principale qui se pose alors est: comment renvoyer vers la page précisée en paramètre? En fait, ceci est très simple, il suffit de jouer avec les entêtes HTTP, et tout particulièrement l'entête Location. Le code suivant:
<?php
header("Location: http://www.phpfacile.com");
?>
renvoie vers la page d'accueil de phpfacile.
warning Aucun message, pas même un caractère espace, ne doit être affiché avant l'appel à la fonction header(). En cas d'erreur consultez la section erreurs et résolution de problèmes
Le schéma du script de compteur de clic est donc le suivant:
<?php
$url = $_GET["url"];

function incrementeCompteur($url)
{
    // A implementer selon la methode choisie base de donnees ou fichier
    // et selon le type de base de donnees
}

incrementeCompteur($url);
header("Location: ".$url);
die();
?>
Avec une table créé[comment?] via la requête SQL[c'est quoi?]
CREATE TABLE clics (url VARCHAR(128), compteur INT DEFAULT 0)
la requête d'incrémentation du compteur serait de la forme
UPDATE clics SET compteur=compteur+1 WHERE url='$url'
rem
  • On suppose, ici, qu'il y a un enregistrement correspondant à l'url passée en paramètre
  • On suppose, ici, que $url ne contient pas d'apostrophe.

20.5.3.En pratique

En pratique, ce n'est généralement pas l'URL qui est passée en paramètre du script de compteur de clic mais un identifiant numérique (la clé primaire d'une table).
Le lien proposé est donc en fait de la forme
<a href="compteclic.php?urlid=1">lien</a>
et le schéma du script le suivant:
<?php
$urlId = $_GET["urlid"];

function recupereURL($id)
{
    // Recherche l'URL correspondant a id
    // retourne FALSE si l'id n'existe pas
}

function incrementeCompteur($id)
{
    // A implementer selon la methode choisie base de donnees ou fichier
    // et selon le type de base de donnees
}

$url = recupereURL($urlId);
if ($url === FALSE) {
    die("Identifiant d'URL inconnu");
}

incrementeCompteur($urlId);
header("Location: ".$url);
die();
?>