Ah oui c’est plus ce que je cherche !
Jj’ai réussi à l’installer sans pb.
J’aimerai toutefois l’améliorer un peu et en profiter pour comprendre le développement sous MODx car je balbutie encore pas mal.
Je souhaite loguer l’IP du derier visiteur afin qu’en cas de rechargement de la page le compteur ne s’incrémente pas.
J’ai donc créé un nouveau champ dans la table page_hit_counter nommé page_last_ip
J’ai modifié le plugin CountPageHit comme suit (partie en rouge) pour logguer cette IP :
// CountPageHit - plugin for MODx 0.9.x
// maintains a count of page views
// 08-2006 [email protected]
// Released to Public Domain
// uses onWebPagePrerender system event
// Manager users’ visits will not be counted.
// Documents set to not Log Visits will not be counted.
// requires PageHitCounter module to create the page_hit_counter table
function get_client_ip_address() {
$remote_addr = $_SERVER["REMOTE_ADDR"];
if ( ( $remote_addr == "127.0.0.1" || $remote_addr == $_SERVER["SERVER_ADDR"] ) && $_SERVER["HTTP_X_FORWARDED_FOR"] ) {
$remote_addrs = explode( ", ", $_SERVER["HTTP_X_FORWARDED_FOR"] );
$remote_addr = $remote_addrs[0];
}
return $remote_addr;
}
$remote_ip = get_client_ip_address();
global $table_prefix;
if(!isset($_SESSION[’usertype’])) { $_SESSION[’usertype’] = ’’; }
if($modx->documentObject[’donthit’] != 1 && $_SESSION[’usertype’] != ’manager’) {
$sql = "INSERT INTO ".$table_prefix."page_hit_counter (page_id, page_count, page_last_ip) VALUES ($modx->documentIdentifier, 1, \"$remote_ip\")
ON DUPLICATE KEY UPDATE page_count=page_count+1";
$modx->db->query($sql);
}
return;
Et ça marche plutôt bien : l’IP du dernier visiteur est bel et bien inscrite dans la table.
Mon soucis, c’est plus sur la récupération des données dans la base pour faire un test.
J’ai par exemple inséré ceci dans le code du plugin :
$sql1 = "SELECT page_last_ip FROM ".$table_prefix."page_hit_counter WHERE page_id = ".$modx->documentIdentifier ;
$modx->db->query($sql1);
Mais là je bloque... la requête fonctionne, mais je ne comprends pas comment récupérer l’info. J’ai vraiment du mal avec la programmation objet... j’espère qu’avec un cas concret je vais y arriver !
Merci pour votre aide