2014-11-05 4 views
-1

Я сделал счетчик посещений сайта, используя php, этот счетчик отлично работает на локальном хосте.сайт hit counter using php не работает

Но не работает, когда я помещаю его на свой сайт. предположим, что я начал couunter.txt со 100, тогда он будет показывать 101 раз и останется таким же 101 для следующих хитов.

<?php 
    $handle = fopen("counter.txt" , "r"); 
    $counter = (int) fread($handle , 10); 
    fclose ($handle); 
    $counter++; 
    echo "<span style='color:white; font-size:12px;'> $counter </span>"; 
    $handle = fopen ("counter.txt" , "w"); 
    fwrite($handle, $counter); 
    fclose ($handle); 
?> 
+6

Это ужасный способ сохранить счетчик ... В любом случае: вы уверены, что имеете разрешение на запись в файл? – Jerodev

ответ

0

Лучшим способом было бы начать сеансы для каждого пользователя, который посещает сайт, и увеличивать значение счетчика для каждого сеанса, начатого им.

<?php 
session_start(); 
$counter_name = "counter.txt"; 


if (!file_exists($counter_name)) { 
    $f = fopen($counter_name, "w"); 
    fwrite($f,"0"); 
    fclose($f); 
} 


$f = fopen($counter_name,"r"); 
$counterVal = fread($f, filesize($counter_name)); 
fclose($f); 

// Check if he has visited 

if(!isset($_SESSION['hasVisited'])){ 
    $_SESSION['hasVisited']="yes"; 
    $counterVal++; 
    $f = fopen($counter_name, "w"); 
    fwrite($f, $counterVal); 
    fclose($f); 
} 

echo "You are number $counterVal"; 

?> 
+0

Мне нужно какое-то изменение на сервере? – TheYogi

+0

Нет. Просто убедитесь, что ваш хостинг поддерживает PHP. И кстати, это основано на сеансах. Если вы хотите сделать так, чтобы вы не хотели, чтобы один и тот же пользователь считался дважды, вам нужно будет внедрить куки. –

+0

этот код также не работает! после размещения этого кода на моем веб-сайте я проверил его на 3 системах, но получить тот же хит нет. – TheYogi