Скрипт счетчика страниц.что случилось? - PullRequest
1 голос
/ 07 сентября 2010

я сделал этот скрипт, который добавляет в базу данных mysql информацию о том, кто посетил мой сайт.

session_start()

if(!isset($_SESSION['log'])) { 
   $ip=$_SERVER['REMOTE_ADDR'];
   $date=date("Y-m-d H:i:s");
   $browser=$_SERVER['HTTP_USER_AGENT'];
   $browser=mysql_real_escape_string($browser);
   if(isset($_SESSION['nickname'])) {
       $user=$_SESSION['nickname'];
   } else {
       $user="unknownABCD1234";
   }
   $insert=mysql_query("INSERT INTO views (ip, user, date, browser) VALUES ('$ip', '$user', '$date', '$browser')", $mydb);  
   $_SESSION['log']='logged';
   $_SESSION['iplog']=$ip;
   $_SESSION['datelog']=$date;
}

проблема в том, что он добавляет ссылку для каждого пользователя много раз (но не всегда, просто иногда).Например, я нахожу в моей информации о БД вот такие:

ID: 1
IP : 95.108.244.252
USER : unknownABCD1234 
DATE : 2010-08-07 01:16:00
BROWSER : Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

ID : 2 
IP : 95.108.244.252 
USER : unknownABCD1234 
DATE : 2010-08-07 01:16:04
BROWSER : Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

это невозможно, нет?я уверен, что сеанс длится более 4 секунд :) что происходит?

Ответы [ 2 ]

5 голосов
/ 07 сентября 2010

Бот отбрасывает информацию о сеансе и игнорирует ваши куки.

Это означает, что он отображается несколько раз в вашем журнале. Да, он попадает на ваш сайт быстро и без информации о сеансе, поэтому вы его не фильтруете.

Ваш лучший вариант - иметь какой-то дублирующий фильтр для ботов или IP-адресов, которые быстро и многократно попадают в этот путь. Вы также можете попробовать добавить явное игнорирование к нескольким агентам пользователей ботов, которые вызывают эту проблему в вашем скрипте. К тому времени, когда у вас будет 10 или 15, вы будете иметь дело с большинством проблемных UA.

0 голосов
/ 07 сентября 2010

Напишите session_start() в начале кода. (Для большей ясности в вопросе)

Хотя время ожидания сеанса по умолчанию в PHP составляет 1440 секунд. По умолчанию сессия закрывается после закрытия браузера. Зная, что журнал приложения содержит бота, скорее всего, он делает то же самое. (открытие и закрытие соединений)

...