Je remonte ce topic car j’ai un petit problème avec le bout de code que j’ai ajouté.
Rappel du script original et de mon ajout (en rouge):
// 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;
L’idée, comme expliquée plus haut, est de loguer l’IP du dernier visiteur afin d’éviter une incrémentation du compteur suite à de multiples refreshs.
Maintenant mon problème.
Comme vous le voyez dans la partie en rouge, je déclare une fonction get_client_ip_address()
En local, je n’avais pas de pb mais sur le serveur distant (sans doute mieux paramétré pour assurer une bonne sécurité), ça bloque : aucune page de mon site ne peut s’afficher : c’est la page blanche !
Devant ce résultat qui est, reconnaissons-le, on ne peut plus "clair", voire même "épuré"... je suis allé voir dans le log du serveur :
PHP Parse error: syntax error, unexpected T_STRING in /home/mydomain/www/manager/includes/document.parser.class.inc.php(748) : eval()'d code on line 128
PHP Fatal error: Cannot redeclare get_client_ip_address() (previously declared in /home/mydomain/www/manager/includes/document.parser.class.inc.php(724) : eval()'d code:11) in /home/mydomain/www/manager/includes/document.parser.class.inc.php(724) : eval()'d code on line 10
Première réaction : "ah bon ? elle était déjà déclarée ? Mais alors pourquoi mon compteur de visites refusait-il de fonctionner sans cette déclaration ?"
J’ai donc essayé de supprimer la déclaration. Tjrs la page blanche.
Deuxième réaction : "eh beh je vais renommer la déclaration de mon code en get_client_ip_address_compteur() pour voir!"
Toujours la page blanche.
Et là je bloque