Ниже представлена часть кода который ограничивает максимальное количество очков (переменная 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())"); } } |