[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Уникальные Ip
Ruless
Ниже представлена часть кода который ограничивает максимальное количество очков (переменная points) в час начисляемых за скачивания. Мне нужно переделать код так чтобы переменная points увеличивалась на 1 если только Ip уникальный за последние 24 часа. В Php абсолютный нуль поэтому очень прошу помощи... Заранее спасибо


if($user->setting[cache_sessions])
{
($hook = YABPlugin::fetch_hook('file_cachedlsession',__FILE__,__LINE__)) ? eval($hook) : '';

$db->setQuery("select sum(points) as num from dlsessions where uid='$user->uid' and start_time>$download_time");
$db->query();
$points =$db->loadRow();
if($points[num]>$downloadrule[dl_maxbyday])
{
$downloadrule[dl_points]=0;
}
unset($points);
}
}





Спустя 1 день, 5 часов, 6 минут, 46 секунд (9.02.2009 - 22:39) Ruless написал(а):
Если сделать так. Будит ли все это работать как надо? Как я понимаю надо будит очищать таблицу.. как это сделать?
SQL
CREATE TABLE ip_table
(
ip INT UNSIGNED NOT NULL,
last_date DATETIME NOT NULL,
INDEX(ip),
INDEX(last_date)
);


PHP
# check points per hour get max allowed points
     
if($user->setting[cache_sessions])
     {
         (
$hook YABPlugin::fetch_hook('file_cachedlsession',__FILE__,__LINE__)) ? eval($hook) : '';
 
         
$db->setQuery("select sum(points) as num from dlsessions where uid='$user->uid' and start_time>$download_time");
         
$db->query();
         
$points =$db->loadRow();
     
$result mysql_query("SELECT COUNT(*) as cnt FROM ip_table WHERE ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."') AND last_date + INTERVAL 1 DAY > NOW()");
$cnt mysql_result($result,0,'cnt');
if(
$cnt 0)
{
    
$downloadrule[dl_points]=0;
}else
{
    
mysql_query("INSERT INTO ip_table(ip,last_date) VALUES(INET_ATON('".$_SERVER['REMOTE_ADDR']."'),NOW())");
}
 }

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.