Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 2
Регистрация: 15.08.2012
Сообщений: 102

Слежка за пользователями

08.03.2014, 23:26. Показов 2052. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил написать простую слежку за пользователями:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class ViewStats {
    private static $stats_base  = 'stats.log';
    private static $stats_limit = 49999;
    private static $stats_file  = null;
    private static $user_ip     = null;
    
    //Основная функция
    public function view_stats() {
        self::$stats_file = file(self::$stats_base);
        self::$user_ip    = $_SERVER['REMOTE_ADDR'];
        
        if (substr_count(file_get_contents(self::$stats_base), self::$user_ip) < 50) {
            self::PutContents();
        } else {
            foreach (self::$stats_file as $num => $str){ 
                if(strpos($str, self::$user_ip)!==false){ 
                  break;
                }
            }
            $fopen_stats=fopen(self::$stats_base,"w");
            for($i=0;$i<sizeof(self::$stats_file);$i++)         
            {           
                if($i==$num) 
                {
                    unset(self::$stats_file[$i]);           
                }
            }           
            fputs($fopen_stats,implode("",self::$stats_file));
            fclose($fopen_stats);
            self::PutContents();
        }
    }
    //Выявляем поисковых ботов
    public function user_bot() {
        if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')) 
        {
            return 'YandexBot';
        } 
        elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) 
        {
            return 'Googlebot';
        }
        else 
        { 
            return $_SERVER['HTTP_USER_AGENT']; 
        }
    }
    //Создаем новую строку
    public function PutContents()
    {
        $stats_file = self::$stats_file;
        $user_href  = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $user_bot   = self::user_bot();
        $user_date  = date("Y-m-d H:i:s");
        
        while(count($stats_file) > self::$stats_limit) array_shift($stats_file);
        $stats_file[] = self::$user_ip."|".$user_href."|".$user_bot."|".$user_date."|\r\n";
        file_put_contents(self::$stats_base, $stats_file);
    }
}
Но теперь задаюсь вопросом: не будет ли эта слежка напрягать сайт (тормозить) ?

Добавлено через 1 минуту
Основная цель - отследить последние 50 шагов пользователя

Добавлено через 20 часов 49 минут
Возможно лучше переписать код под MySQL?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2014, 23:26
Ответы с готовыми решениями:

Слежка за пользователями - посещение сайтов
Возможно ли создание proxi-сервера слежки за всеми пользователями на Микротике RB1100AHx4 только кто какие сайты посещают? Если нет, то...

Разница LTS и неLTS версий, слежка за пользователями, состав пакетов
Здравствуйте. Уже давно принял решение установить операционную систему Linux. Имеется 2 компьютера, старый стационарник с плохими...

слежка за юзером
Привет. Мне надо определить по каким разделам сайта бродит пользователь, неважно зарегистрированный или гость. Т.е., куда человек в...

4
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
09.03.2014, 00:15
MarkoPolo, сам никогда не страдал такой проблемой, но если бы понадобилось (что вряд ли), то большую часть работы, закинул бы на клиент. Если чисто теоретически, то:
1. При заходе юзера, проверяется есть ли в Local Storage запись с его ip
2. Если нет, то ajax запрос на сервер, получаем его ip, который далеко не всегда может быть белым, и возвращаю его ответом.
3. Создаю запись в LS, где ключом и будет переданный ip
4. При каждом переходе по внутренним ссылкам, записываю в объект адрес страницы, если надо, то и время перехода, etc. и эти данные закидываю в уже созданную запись LS
5. Остается последнее - вовремя передать тем же ajax-ом данные из LS на сервер. Тут может быть несколько вариантов или даже все в комплексе: пользователь не подавал признаков жизни N секунд (может на пиво ушел до утра) т.е. отправляем по таймауту, отловить закрытие браузера - onbeforeunload, поставить эту задачу подпунктом 2.1, когда проверка LS выявила, что юзер уже бывал тут, а записи по какой-то причине остались старые.
И конечно следить за переодической очисткой LS.
Вот как-то так... И конечно есть маленький плюс в том, что на одном "сером" IP может сидеть надцать пользователей, но LS привязывается к браузеру.
0
0 / 0 / 2
Регистрация: 15.08.2012
Сообщений: 102
09.03.2014, 00:31  [ТС]
То есть Вы рекомендуете основные функции выполнить с помощью javascript, который с легкостью можно выключить?
А о Local Storage я вообще молчу
IE 8.0+
Firefox 3.5+
Safari 4.0+
Chrome 4.0+
Opera 10.5+
iPhone 2.0+
Android 2.0+
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
09.03.2014, 00:49
Цитата Сообщение от MarkoPolo Посмотреть сообщение
выполнить с помощью javascript, который с легкостью можно выключить?
MarkoPolo, сударь, я высказал своё мнение и не больше. Ваша аудитория, скорее всего отличается от категории моих клиентов. Сейчас практически не осталось сайтов, которые работают без JS, о чем хорошо известно юзерам. Посему, на сегодняшний день, уже практически никто не отключает JS в браузерах, включая и браузеры на рабочих местах. Я не рассчитываю на пользователей, у которых по каким-то причинам, может быть еще какой-нибудь осел версии 7 или того ниже, FF ниже версии 3.5 и так далее.
Решать вам. Моё дело - предложить, ваше - действовать по своему усмотрению.
0
0 / 0 / 2
Регистрация: 15.08.2012
Сообщений: 102
09.03.2014, 01:45  [ТС]
Lazy_Den, Возможно я старомоден, но php - это основная начинка завернута об яркий фантик с javascript и css. И пока не умрет последний пользователь IE 7 или того ниже - я буду придерживаться этой мысли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2014, 01:45
Помогаю со студенческими работами здесь

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

Слежка за ботом гугла
Прочел про это код &lt;div&gt;Код&lt;/div&gt;&lt;div&gt;&lt;?php $email = &quot;ваш@е.майл.сом&quot;; if (eregi(&quot;googlebot&quot;,$_SERVER)) { mail($email,...

Слежка за компьютером на удаленке
Здравствуйте! Сразу скажу, что я обычный юзер и вопрос у меня довольно простой: как определить, что за моим компьютером следят? ...

Слежка за почтовыми собщениями
Доброго времени суток дорогие гуру лотуса! Встала у меня такаявот задачка, сделать отчёт о почтовых собщения.Кратко звучит так: кто,...

Слежка через вебку
Если вебка у меня заклеена, могут ли меня ещё как-то видеть другие пользователи сети, если на моём компе вирус, предоставляющий им...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru