пара вопросов к знающим

Статус
В этой теме нельзя размещать новые ответы.

ghostik32

Создатель
Регистрация
26 Янв 2010
Сообщения
40
Реакции
1
Всем привет!
Пишу большой сайт и по ходу дела возникли пару вопросов:
- Как можно организовать статистику, на сайте человек или нет (у меня сейчас добавляется запись в mysql, при авторизации пользователя, что он на сайте, а когда он делает логаут то запись в таблице убирается и он как бы оффлайн). В таком способе есть неточность, если пользователь просто закроет браузер то он так и останется Онлайн на сайте так как в БД таблица не обновится.
- Как можно организовать сбор статистики на сайте. Допустим кто-то пытается sql injected сделать, как это можно отследить.
 
SQL иньекции. Если пытались и у них не получилось, то в принципе эта инфа неинтересная. Если пытались и получилось, то Вы первые об этом узнаете.

А вообще отследить желаемые скл иньекции очень просто:

1. Нужно сравнивать передаваемые в mysql запрос параметры до их отчистки от ненужных символов и после отчистки.

2. Если все параметры одинаковые, то sql иньекции нету или Вы неправильно чистите параметры.

3. Если полученные параметры разные, то пишем в лог или еще куда переданные параметры и юзера, который это вводил.

По статистике сайта: В Бд нужно ввести дополнительное поле, в которое писать время последнего открытия любой страницы пользователем.
Затем кроном или еще как удалять юзверей из этой таблицы таймаут которых больше определенного времени (например 15 минут).
 
очень интересно, спасибо!
Можно какой-нибуть примерчик про чистку запросов в mysql, а то несовсем вас понял.
По поводу логов при открытии страницы, если пользователей пара тысяч то и БД будет нагружена лишними запросами. Может есть способ без БД?

P.S по поводу вашего способа статистики, как я понимаю будет что-то вроде такого:
PHP:
mysql_query ("UPDATE `users` SET last_view_url = '" . time () . "' WHERE hash = '" . $_SESSION['hash'] . "'");
 
Запрос примерно правильный. И еще будет 1 запрос на удаление где last_view_url меньше (текущее минус N минут)

Каждый пишет скрипты под себя, поэтому могу алгоритм только написать. По-любому с моим скриптом придется разбираться примерно столько же сколько и писать самому.
Пишу еще раз алгоритм только другими словами
Пользователь залогинился - записали (обновили) время в таблице. Пользователь открыл новую страницу - записали (обновили) время в таблице.
С помощью какого-нибудь планировщика из этой таблицы например 1 раз в минуту или 1 раз в 5 минут удаляем устаревших пользователей, которые не открывали страницы в течении например 5 или 15 минут.

По-любому на БД будет дополнительная нагрузка. Можно все это хранить в файлах но опять же ничего хорошего из этого не будет. Тут больше вопрос зачем нужно знать ОН-лайн пользователей? Как-то вешал на сайт видеостатистику он кликтейл.ком и на видео глядел как мой сайт пытались взломать. Интересное зрелище для неслабонервных :) .

p.s. Кстати по поводу логов sql иньекций. Лучше НЕ писать их в БД :). А то вдруг плохо заэкранируете плохие символы и получите отрицательный эффект. Как-то вешал на сайт видеостатистику он кликтейл.ком и на видео глядел как мой сайт пытались взломать. Интересное зрелище для неслабонервных :) .
 
самый дешевый способ узнать сколько юзверей на сайте (дешевый если сайт очень нагружен) - то это почитать кол-во файлов сессии php. - столько юзерей на сайте :)
 
самый дешевый способ узнать сколько юзверей на сайте (дешевый если сайт очень нагружен) - то это почитать кол-во файлов сессии php. - столько юзерей на сайте :)
Это не самый дешевый способ. Для этого по крайней мере мере надо указывать session_save_path и еще бы неплохо session_save_handler. В противном случае доступ к файлам сессии не получишь, если конечно у тебя не свой vps/vds и т.п.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху