простой счетчик php в нижнем колонтитуле добавить cookie или сессию

У меня есть простой скрипт счетчика php, который я хотел бы сделать немного более сложным.

В настоящее время скрипт обращается к текстовому файлу (hit.txt) и добавляет его каждый раз, когда просматриваются страницы веб-сайтов, а затем отображает число в нижнем колонтитуле.

Я хочу добавить куки или сеанс .. не уверен, что лучше, потому что я новичок с php.

По сути, я не хочу, чтобы он складывался, если один и тот же посетитель просматривает каждые 10 страниц веб-сайта … он должен учитываться только один раз.

Это код:

$open = fopen("counter/hits.txt", "r+");
$value = fgets($open);
$close = fclose($open);

$value++;

$open = fopen("counter/hits.txt", "w+");
fwrite($open, $value); // variable is not restated, bug fixed.
$close = fclose($open);

echo $value;

Заранее спасибо за помощь


РЕДАКТИРОВАТЬ, приведенный выше код был слишком прост, поэтому я указал на этот сайт в качестве примера, и он имеет то, что я искал

http://hibbard.eu/how-to-make-a-simple-visitor-counter-using-php/


Однако это новый код, который я использую — часть «сеанс» не должна работать, потому что каждый раз, когда я обновляю страницу, счетчик все равно увеличивается. Я бы предпочел, чтобы он не увеличился, если бы он был одним и тем же посетителем.

session_start();
$counter_name = "counter/hits.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++;
$f = fopen($counter_name, "w");
fwrite($f, $counterVal);
fclose($f);
}

echo "You are visitor number $counterVal to this site";

Заранее спасибо за помощь


РЕДАКТИРОВАТЬ, ИСПРАВЛЕНО


Оказывается, мне нужно было иметь session_start () .. или сценарий в целом в самом верху файла документа страницы … Я включал сценарий в нижний колонтитул, и он рассчитывал на обновление … это, похоже, исправило проблема .. надеюсь, это поможет.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]