8721 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

Je suis en train de réfléchir à un système permettant de comptabiliser le nombre de clics sur un des liens présent sur la page (j'affiche le nombre de clic sur cette même page près du lien). Le lien s'ouvre sur une page extérieure à mon site (je ne peux pas la modifier).
Je sais qu'en JavaScript c'est faisable assez aisément, mais je souhaiterais m'affranchir de JS et le faire côté serveur.
Voilà à quoi j'ai pensé pour l'instant : au clic, j'envoie mon utilisateur vers une page php que j'ai nommée redirection.php avec dans la chaîne get les infos qu'il me faut pour accéder à la page que je souhaite ouvrir. Au début de cette page de redirection, je fais un update de l'enregistrement de ma ligne de bdd en incrémentant la colonne que j'ai nommée "clics" de 1. Après cette opération je redirige l'utilisateur vers la page de destination (header(location: ...)).
Ça fonctionne mais le défaut est que si l'utilisateur revient vers la page source (en utilisant les flèches du navigateur), l'affichage du nombre de clics n'est pas à jour. Je ne vois pas comment régler ce problème en php, mais peut-être que quelqu'un d'entre-vous a une solution...

Merci d'avance.
Modifié par jojaba (10 Jun 2013 - 12:59)
Modérateur
Salut,

Après un history back, ce ne sera pas possible de d'afficher en temps réel en php. Là où il y a ton compteur, tu testes régulièrement afin d'afficher correctement la valeur. C'est faisable en JS et en AS, si je ne m'abuse.
Modifié par niuxe (08 Jun 2013 - 19:57)
Modérateur
Je me doutais un peu que ce n'était pas possible sans faire appel à du traitement côté client, mais bon, je demandais à tout hasard.
Je pense incrémenter le nombre de clics directement sur la page source au clic (en JS donc) avant d'envoyer vers la page redirection pour lancer le traitement côté serveur. C'est pas top, mais ça fera l'affaire Smiley cligne
Merci.
Modifié par jojaba (10 Jun 2013 - 08:30)
Modérateur
Pour ceux que ça intéresse la page de redirection :
<?php
/* **************************** */
/* Opérations d'initialisation */
/* **************************** */
// Fonctions utiles
include_once('fonctions.php');

// Récupérations de l'id de l'adresse de la ressource
$id = (isset($_GET['id'])) ? $_GET['id'] : null;
$url = (isset($_GET['url'])) ? $_GET['url'] : null;

/* ************************************* */
/* Traitements avant renvoi vers la page */
/* ************************************* */

if ($id && $url) {
	// Incrémentation du nombre de clics
	$req = 'UPDATE fiches SET clics=clics+1 WHERE id='.$id.'';
	$nbr_lignes = $conx->exec($req);
	// Redirection vers la page de destination
	header('location: '.$url);
	exit();
}
?>


Pour le JS permettant de modifier le nombre de clics avant l'envoi vers la page de redirection j'ai ajouté le comportement suivant au lien permettant d'ouvrir la page destination (en transitant par la page de redirection) :
var clics = document.getElementById(\'nb_clics_'.$id.'\');
clics.innerHTML = parseInt(clics.innerHTML)+1;

nb_clics_xx étant l'id du <span> me permettant d'identifier la zone à modifier :
<span id="nb_clics_42">5</span>