Пуля — дура. Пых — молодец.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 23 Май, 2012, 04:31:04

Страниц: [1]
Печать
Автор Тема: Уникальный Ip  (Прочитано 730 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Ruless    ↓ 
09 Февраль, 2009, 04:51:14
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0

Доброе время суток друзья  Прошу вас ознакомится с данным кусочком кода.
Text
# 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();
         if($points[num]>$downloadrule[dl_maxbyday])
         {
             $downloadrule[dl_points]=0;
         }
         unset($points);
     }
 }

Здесь осуществляется проверка: если переменая $points[num] больше переменной $downloadrule[dl_maxbyday] то $downloadrule[dl_points]=0;
мне надо убрать это условие и поставить свое. Суть условия в том, что должна проходить проверка Ip на уникальность. Тоесть если такой Ip адрес уже был в списке за последние 24 часа то $downloadrule[dl_points]=0; если нет заносим ip в базу данных. Предпологаю использовать MySQL. Прошу помочь так как в PHP я абсолютный ноль..
Записан
Ruless    ↓ 
09 Февраль, 2009, 10:41:41 , спустя 5 часов 50 минут 27 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 2
Сила слова: 0

Если сделать так. Будит ли все это работать как надо? Как я понимаю надо будит очищать таблицу.. как это сделать?
sql
Text
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())");
}
 }
 
Записан
krasun    ↓ 
10 Февраль, 2009, 11:36:24 , спустя 1 день 54 минуты 43 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи
Группа: Джедаи

Карма: 41
Сообщений: 1379
Сила слова: 2.97

очистка таблицы Truncate table
Записан
AlexB    ↓ 
10 Февраль, 2009, 11:59:25 , спустя 23 минуты 1 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3423
Сила слова: 2.6


очистка таблицы Truncate table
Есть нюанс ... Truncate это фактически уничтожение таблицы и ее воссоздание. Т.е.должны быть соответствующие права. Поэтому часто правильней юзать DELETE FROM table, оно позволяет ограничить набор прав для аккаунта под которым скрипт соединяется с базой.
Записан

krasun    ↓ 
11 Февраль, 2009, 06:02:25 , спустя 18 часов 3 минуты
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи
Группа: Джедаи

Карма: 41
Сообщений: 1379
Сила слова: 2.97



очистка таблицы Truncate table
Есть нюанс ... Truncate это фактически уничтожение таблицы и ее воссоздание. Т.е.должны быть соответствующие права. Поэтому часто правильней юзать DELETE FROM table, оно позволяет ограничить набор прав для аккаунта под которым скрипт соединяется с базой.

Я часто пользуюсь truncate так как нахожу его более быстрым, а на счет прав вы правы.  
 

на счет прав вы правы
Записан
Страниц: [1]
Печать
 

Перейти в: