2010-04-22 1 views
1

J'ai un code d'incrémentation pageview de base mis en place sur un serveur LAMP (voir le code ci-dessous).Sessions PHP: compte de pages vues double incrémentation dans firefox3 et chrome4

Le code lance une session, vérifie si les pages vues sont définies, les incrémente sinon et imprime la variable. La page se lie à elle-même avec un seul href, et en cliquant sur ce lien, le nombre de pages vues affiché à l'écran augmente d'une unité. Cela fonctionne correctement dans IE8, Safari4 et Opera10. Mais dans Firefox3 et Chrome4, il incrémente de deux chaque fois que je clique sur le lien. J'utilise une nouvelle installation de Chrome et Firefox, et j'ai aussi essayé cela en mode sans échec Firefox.

Paradoxalement, j'ai exactement le même code qui fonctionne correctement sur un autre site en direct sur le même serveur.

Cela pourrait être plus d'une question de navigateur qu'une question PHP :-)

Merci d'avance pour votre aide!

<? 
// start session 
session_start(); 

// increment page views 
if (isset($_SESSION['pageviews'])) { 
$_SESSION['pageviews'] ++; 
} 

// if new session, set page views at 1 and capture source URL 
else { 
$_SESSION['pageviews'] = 1; 
$_SESSION['sourceurl'] = $_SERVER['HTTP_REFERER']; 
} 

// capture user ip address 
$ipaddress = $_SERVER['REMOTE_ADDR']; 
?> 
+2

Vous devriez regarder vos journaux d'accès au serveur Web tout en tester ceci. Cela peut être un peu plus révélateur de voir exactement ce qui est demandé ou de revenir. Aussi, pour Firefox, consultez le plugin HttpFox, pour voir exactement comment le navigateur fait des requêtes, et quelles sont les réponses. –

+0

Bonnes idées. Je commence juste avec le développement web (probablement évident). Le colonel Shrapnel a résolu ce problème particulier, mais je pense que je ferai ce que vous avez suggéré de toute façon pour apprendre quelque chose. Merci! – Adam

Répondre

1

La cause la plus habituelle est une mauvaise mise en œuvre urls lisible par l'homme, lorsque routeur agit en tant que gestionnaire 404, donc, favicon.ico inexistant serait une autre demande;)

+0

Merci, Colonel - vous l'avez cloué! J'ai ajouté un favicon et il fonctionne correctement dans les deux navigateurs maintenant. Mais ta réponse me dépasse un peu. Voulez-vous dire que mon serveur Apache gère mal les URL, ou que les navigateurs sont? – Adam

+0

@Adam votre index.php doit distinguer les requêtes et ne servir que celles attendues. Dites qu'il ne devrait compter que/demandes et rien d'autre. Tous les modèles de demandes doivent être pré-écrits dans votre script Si aucun ne correspond, aucun cation ne doit être pris et l'erreur 404 doit être lancée à la place –