![]() |
Биллиногвая система
Ну опишу на простом примере:
Допустим есть сайт на нем 3 ссылки уходяшие на другие инет ресурсы, нужно посчитать сколько раз нажималась та или инная ссылка пользователем, причем одним пользователям - 1 раз, второй раз - не учитываеться. Один пользователь считаеться - один раз в сутки, при повторном нажатии в течении 24 часов, счетчик не увеличиваеться. ссылки можна считать отправляя сначала на пустую страничку, в ней выполняеться увеличивание счетчика определенной ссылки, а потом редирект - по назначению... или лучше другим методом? как идентифицировать пользователей? ставить кукис + сравнивать айп адресс но где этот айпи-адресс хранить в кукис? в бд? можно хранить в куки сессию, а в бд к определенной сессии айпишник но как тогда организовать АВТОМАТИЧЕСКОЕ УДАЛЕНИЕ ИЗ БД ЧЕРЕЗ 24 часа! скрипт можно написать. что удаляет файлы по таймстамп, но его нужно запускать... Как млжно решить проблему по "автоматическому" удалению из бд отживших пользователей? И какие еще виды защиты от повторного захода того же пользователя, вообщем что бы не накручивали... внести списки популярных прокси в фильтрацию? не лучший вариант:( ах да реализовывать на PHP... |
Делать нефиг, вот написал... Если даж код не правильный (не тестил), смысл понять должен:
PHP код:
|
Эх Developer, Developer, ресурс по безопасности, а мы такие скрипты постим, по моему первое, что должно приходить в голову при использовании SQL, это фильтрация используемых кавычек ;) А второе фильтровать эскейп символы '\'
Насчёт удаления из ДБ по истечению времени, как вариант, при каждом запросе выполнять чистку, например: Код:
'DELETE FROM ips WHERE time<'.(time()-60*60*24) |
Цитата:
Цитата:
|
Кстати что-то не вижу особого смысла в чистке...
Ну, мы же хотим знать, сколько раз юзер перешел по ссылке до этого момента? Зачем тогда чистка? Или я чего-то не понял. |
Цитата:
|
Developer, ты просто людей в смятение не вгоняй :) а то закинут такие секурные скрипты себе на сайт, а потом будут ругаться, мол как это меня хэкнули.
Теперь по сабжу. Моё имхо. Хочешь идентифицировать пользователя - самое верное это, прежде всего, хранить в БД IP и штамп времени обратившегося пользователя. Т.е. пользователь "127.0.0.1" обратился к скрипту биллинга по ссылке "http://localhost" (или писать ID ссылки, хранящейся в отдельной таблице), во время "1111111111" (time). Ну и можно записать куку - упросить работу, т.е., пишем куку billing_checked, без разницы с каким значением, и если эта кука присутствует - вообще не обращаемся к базе (главное не забыть выставить срок жизни куки), а если нету - чекаем по базе, если юзвер за последние 24 часа уже приходил с сылкой "http://localhost" (или ID таким-то), то просто редиректим его на эту самую ссылку, но не плюсуем к посещениям этого пользователя, если же он не приходил с этой ссылкой или это было более 24 часов назад, пишем +1 к посещениям и посылаем юзвера по ссылке. Имхо. Чего сложного? Требуется: PHP+MySQL+Немного мозгов и этот текст. |
| Время: 08:02 |