ФорумРазработкаБазы данных → Уникальный Ip

Уникальный Ip

  • Ruless

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz Фев. 9, 2009, 4:51 п.п.

    Доброе время суток друзья Прошу вас ознакомится с данным кусочком кода.
    # 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

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz Фев. 9, 2009, 10:41 п.п., спустя 5 часов 50 минут 27 секунд

    Если сделать так. Будит ли все это работать как надо? Как я понимаю надо будит очищать таблицу.. как это сделать?
    sql
    CREATE TABLE ip_table
    (
    ip INT UNSIGNED NOT NULL,
    last_date DATETIME NOT NULL,
    INDEX(ip),
    INDEX(last_date)
    );


    # 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

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Фев. 10, 2009, 11:36 п.п., спустя 1 день 54 минуты

    очистка таблицы Truncate table
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Фев. 10, 2009, 11:59 п.п., спустя 23 минуты 1 секунду


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

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Фев. 11, 2009, 6:02 п.п., спустя 18 часов 3 минуты



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


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


    на счет прав вы правы

Пожалуйста, авторизуйтесь, чтобы написать комментарий!