blasheevich
@blasheevich

Поясните по поводу простейшего PHP счётчика

<?php

$f=fopen("stat.dat","a+");
flock($f,LOCK_EX);
$count=fread($f,100);
@$count++;
ftruncate($f,0);
fwrite($f,$count);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
echo " с 21 июня 10 года, Вы $count -й по счёту посетитель ";
?>

Есть ли уязвимости у скрипта, и хотелось бы узнать, и ботов он тоже считает?
И чем может быть вызвано резкое увеличение его показаний.
Спасибо.
  • Вопрос задан
  • 2547 просмотров
Пригласить эксперта
Ответы на вопрос 6
@m-haritonov
И чем может быть вызвано резкое увеличение его показаний.

У кого-то залипла клавиша F5. :)
Ответ написан
Комментировать
blasheevich
@blasheevich Автор вопроса
О, спасибо, своих ботов я уже знаю в лицо, исправлю пока только последнюю строчку:

echo " с 21 июня 10 года, Вы $count -й по счёту посетитель, включая сюда ботов, и залипшую f5.

Недавно был отловлен там вирус-спамер, вот я и подумал... Хотя я даже не знаю что и подумать...
Ответ написан
Комментировать
Конечно ботов считает) Более того, если один бот зайдет на него миллион раз с одного айпи, он это все посчитает. Вы не делаете никаких проверок, а просто увеличиваете счетчик каждый раз. Для начала я бы сделал проверку на уникальный ip в сутки, ну а потом уже и более сложныею
Ответ написан
Комментировать
@DarthEvil
Учитывая, как он считает, до сайта просто добрался бот поисковика )
Ответ написан
Комментировать
Считает все. И ботов и F5. Проверяйте по ip. Но проще чтобы не создавать файликов, баз и прочего - записывать куку и если она есть то засчитывать и менять куку в значение ='засчитано', но будет считаться только второе открытие страницы.
Чтобы при первой засчитывалось можно на странице iframe невидимый поставить с обращением к счетчику.
Ответ написан
Комментировать
GM2mars
@GM2mars
session_start();

if (!isset($_SESSION['count'])) {
  $_SESSION['count']=true;
  (ваш скрипт записи в счетчик)
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы