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.
|
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'
|
- 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();
?>