У меня есть простой скрипт счетчика 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 () .. или сценарий в целом в самом верху файла документа страницы … Я включал сценарий в нижний колонтитул, и он рассчитывал на обновление … это, похоже, исправило проблема .. надеюсь, это поможет.
Задача ещё не решена.
Других решений пока нет …