2017-07-28 1 views
0
<?php 
ob_start(); 
session_start(); 
$counter_name = "index.txt"; 
// Check if a text file exists. If not create one and initialize it to zero. 
if (!file_exists($counter_name)) { 
    $f = fopen($counter_name, "w"); 
    fwrite($f,"0"); 
    fclose($f); 
} 
// Read the current value of our counter file 
$f = fopen($counter_name,"r"); 
$counterVal = fread($f, filesize($counter_name)); 
fclose($f); 
// Has visitor been counted in this session? 
// If not, increase counter value by one 
if(!isset($_SESSION['hasVisited'])){ 
    $_SESSION['hasVisited']="yes"; 
    $counterVal++`enter code here`; 
    $f = fopen($counter_name, "w"); 
    fwrite($f, $counterVal); 
    fclose($f); 
} 
?> 

J'utilise ce code pour compter le nombre de visiteurs sur une page en utilisant des sessions. Mais je veux aussi garder le compteur de pages sur toutes les autres pages. Ainsi, lorsque je copie et colle le code dans d'autres pages, la valeur ne s'incrémente pas. Il ne s'incrémente que sur la première page mais pas sur l'autre page que je visite. Quelle est la solution possible?compteur de page sur différentes pages du site Web

+0

Il y a un certain nombre de problèmes ici, mais il n'y a aucune raison pour que cette logique ne fonctionne pas sur d'autres pages de votre site aussi . Vous devez cependant utiliser un chemin absolu pour vous assurer que tous les scripts adressent le même emplacement de fichier dans votre système de fichiers côté serveur. – arkascha

+0

pour les autres pages j'ai différents fichiers texte qui stocke la valeur du compteur. le problème est une fois que la session commence sur une page web, elle reste comme ça quand je passe à l'autre page et donc l'autre valeur du compteur de page n'obtient pas un incrément. –

+0

Désolé, mais je ne comprends pas votre dernier commentaire. Si tout cela concerne le suivi des visiteurs et des numéros, pourquoi n'utilisez-vous pas simplement une solution existante et éprouvée comme 'piwik' ou un analyseur de fichier journal apache? Plus facile et vous obtenez des informations de plus en plus précises. – arkascha

Répondre

1

Je le fais sur mon site Web en stockant des informations dans une base de données. C'est plus sûr que d'utiliser un fichier txt, alors vous devriez envisager de le faire. Et vous pouvez utiliser l'IP avec SESSION pour être plus complet avec la tenue de dossiers. Créez un fichier de consignation du trafic à inclure dans votre fichier d'en-tête qui utilisera l'adresse URI, l'adresse IP, l'ID de session/l'ID utilisateur. En utilisant l'URI de la requête, vous pouvez placer un seul script de journalisation du trafic sur toutes les pages pour gérer toutes les pages Web que vous souhaitez suivre. Je peux ajouter quelques exemples de code si vous le souhaitez.

Espérons que ça vous aide!

*/ 
Define Variables You Want To Store..In this case it is preparing a timestamp, the page (i.e. the $_SERVER['REQUEST_URI']), and the IP 
/* 

$time = time(); 
$page = $_SERVER['REQUEST_URI']; 

//This is used to sort out the correct IP Address to store // 

$client = @$_SERVER['HTTP_CLIENT_IP']; 
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
$remote = $_SERVER['REMOTE_ADDR']; 

    if(filter_var($client, FILTER_VALIDATE_IP)) { 
     $ip = $client; 
    } elseif(filter_var($forward, FILTER_VALIDATE_IP)) { 
     $ip = $forward; 
    } else { 
     $ip = $remote; 
    } 

//Use this if you want to see if the data exists already, I usually just store all traffic to make sure people aren't up to anything fishy// 



$stmt = $database->prepare("SELECT ID FROM traffic WHERE IP = :IP AND page = :page"); 
$stmt->bindParam(':IP', $ip); 
$stmt->bindParam(':page', $page); 
$stmt->execute(); 
$result = $stmt->FetchALL(PDO::FETCH_ASSOC); 

if (!isset($result)) { 
    $sql = "INSERT INTO traffic (time,IP,page) VALUES (:time, :ip, :page)"; 
    $params = array(
      ':time' => $time, 
      ':ip' => $ip, 
      ':page' => $page, 
     ); 
    $stmt = $database->prepare($sql); 
    $stmt->execute($params); 
} 
+0

Merci beaucoup. s'il vous plaît ajouter du code afin que je puisse le comprendre correctement –

-1

Vous devez utiliser dans mysql ou sqlite ou un autre serveur de base de données pour enregistrer un nom et un nombre de visites. Vous devez d'abord créer une base de données et apprendre comment l'utiliser. Ne pas lancer .... Avec les fichiers TXT vous ne pouvez pas arriver loin ...