ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Биллиногвая система
  #1  
Старый 28.04.2007, 17:33
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию Биллиногвая система

Ну опишу на простом примере:

Допустим есть сайт на нем 3 ссылки уходяшие на другие инет ресурсы,

нужно посчитать сколько раз нажималась та или инная ссылка пользователем, причем одним пользователям - 1 раз, второй раз - не учитываеться.

Один пользователь считаеться - один раз в сутки, при повторном нажатии в течении 24 часов, счетчик не увеличиваеться.

ссылки можна считать отправляя сначала на пустую страничку, в ней выполняеться увеличивание счетчика определенной ссылки, а потом редирект - по назначению...
или лучше другим методом?

как идентифицировать пользователей?
ставить кукис + сравнивать айп адресс

но где этот айпи-адресс хранить в кукис?
в бд?

можно хранить в куки сессию, а в бд к определенной сессии айпишник

но как тогда организовать АВТОМАТИЧЕСКОЕ УДАЛЕНИЕ ИЗ БД ЧЕРЕЗ 24 часа!

скрипт можно написать. что удаляет файлы по таймстамп, но его нужно запускать...
Как млжно решить проблему по "автоматическому" удалению из бд отживших пользователей?
И какие еще виды защиты от повторного захода того же пользователя, вообщем что бы не накручивали...
внести списки популярных прокси в фильтрацию? не лучший вариант

ах да реализовывать на PHP...

Последний раз редактировалось Naydav; 28.04.2007 в 17:37..
 
Ответить с цитированием

  #2  
Старый 28.04.2007, 20:22
Аватар для Developer
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
По умолчанию

Делать нефиг, вот написал... Если даж код не правильный (не тестил), смысл понять должен:

PHP код:
<?php

// Redirect script

mysql_pconnect('localhost''root''');
mysql_select_db('mydb');

if (isset(
$_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0) {
    
// Определяем текущее время
    
$time time();
    
// Определяем запрошенный URL
    
$url trim($_SERVER['QUERY_STRING']);
    
// Определяем IP адресс
    
if (isset($_SERVER['HTTP_X_REAL_IP']) && $_SERVER['HTTP_X_REAL_IP'] != 'unkown') {
        
$ip trim($_SERVER['HTTP_X_REAL_IP']);
    } else if (isset(
$_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != 'unkown') {
        
$ip trim($_SERVER['HTTP_X_FORWARDED_FOR']);
    } else {
        
$ip $_SERVER['REMOTE_ADDR'];
    }
    
// Ищем строку с данным URL, где IP равен IP текущего юзера
    
$query "SELECT * FROM `redirect` WHERE `url`='$url' AND `ip`='$ip'";
    
$reqult mysql_query($query);

    if (
$data mysql_fetch_object($result) && ($time $data->time) > 86400) {
        
// Если такая строка есть и прошло 24 часа с момента последнего посещения
        // Увелчиваем счетчик посещений на 1 и записываем текущее время
        
$count $data->count 1;
        
$query "UPDATE `redirect` SET `time`='$time', `count`='$count' WHERE `url`='$url' AND `ip`='$ip'";
    } else {
        
// Если такой строки нет
        // Записываем такую строку
        
$query "INSERT INTO `redirect` (`time`, `ip`, `count`, `url`) VALUES ('$time', '$ip', '1', '$url')";
    }
    
mysql_query($query);
    
header('Location: ' $url);
}

?>

Последний раз редактировалось Developer; 28.04.2007 в 20:25..
 
Ответить с цитированием

  #3  
Старый 28.04.2007, 20:55
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Эх Developer, Developer, ресурс по безопасности, а мы такие скрипты постим, по моему первое, что должно приходить в голову при использовании SQL, это фильтрация используемых кавычек А второе фильтровать эскейп символы '\'

Насчёт удаления из ДБ по истечению времени, как вариант, при каждом запросе выполнять чистку, например:
Код:
'DELETE FROM ips WHERE time<'.(time()-60*60*24)

Последний раз редактировалось hidden; 28.04.2007 в 20:59..
 
Ответить с цитированием

  #4  
Старый 28.04.2007, 21:23
Аватар для Developer
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
По умолчанию

Цитата:
Эх Developer, Developer, ресурс по безопасности, а мы такие скрипты постим, по моему первое, что должно приходить в голову при использовании SQL, это фильтрация используемых кавычек А второе фильтровать эскейп символы '\'
Я ему что готовый код писал? Просто показал пример. О mysql_real_escape_string знаю, не переживай ))

Цитата:
Насчёт удаления из ДБ по истечению времени, как вариант, при каждом запросе выполнять чистку, например:
Еще лучше, если через крон каждые N часов.
 
Ответить с цитированием

  #5  
Старый 28.04.2007, 21:26
Аватар для Developer
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
По умолчанию

Кстати что-то не вижу особого смысла в чистке...

Ну, мы же хотим знать, сколько раз юзер перешел по ссылке до этого момента? Зачем тогда чистка? Или я чего-то не понял.
 
Ответить с цитированием

  #6  
Старый 28.04.2007, 21:45
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Цитата:
Сообщение от Developer  
Кстати что-то не вижу особого смысла в чистке...

Ну, мы же хотим знать, сколько раз юзер перешел по ссылке до этого момента? Зачем тогда чистка? Или я чего-то не понял.
Мы не хотим знать, сколько раз юзер перешёл по этой ссылке, мы хотим знать сколько уникальных юзеров перешло по ней, так-же мы не хотим захламлять ДБ лишними записями.
 
Ответить с цитированием

  #7  
Старый 28.04.2007, 21:50
Аватар для Raz0r
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

Developer, ты просто людей в смятение не вгоняй а то закинут такие секурные скрипты себе на сайт, а потом будут ругаться, мол как это меня хэкнули.
Теперь по сабжу. Моё имхо.
Хочешь идентифицировать пользователя - самое верное это, прежде всего, хранить в БД IP и штамп времени обратившегося пользователя. Т.е. пользователь "127.0.0.1" обратился к скрипту биллинга по ссылке "http://localhost" (или писать ID ссылки, хранящейся в отдельной таблице), во время "1111111111" (time). Ну и можно записать куку - упросить работу, т.е., пишем куку billing_checked, без разницы с каким значением, и если эта кука присутствует - вообще не обращаемся к базе (главное не забыть выставить срок жизни куки), а если нету - чекаем по базе, если юзвер за последние 24 часа уже приходил с сылкой "http://localhost" (или ID таким-то), то просто редиректим его на эту самую ссылку, но не плюсуем к посещениям этого пользователя, если же он не приходил с этой ссылкой или это было более 24 часов назад, пишем +1 к посещениям и посылаем юзвера по ссылке.
Имхо. Чего сложного? Требуется:
PHP+MySQL+Немного мозгов и этот текст.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Система закачки файлов, управляемая через Icq NightNinja ICQ 3 03.04.2007 23:20
Настоящая хакерская операционная система. НХОС! zl0ba Болталка 3 16.12.2006 19:58
В Японии представлена новая система защиты сотовых телефонов Zek Мировые новости 0 28.10.2006 00:26
В Европе разрабатывается новая система защиты от DDoS-атак dinar_007 Мировые новости 0 19.07.2006 13:53
Живучая ОПерационная системА России dinar_007 Мировые новости 2 01.04.2006 10:09



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ