Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобратся 
V
    Опции темы
Ruless
  Дата 9.2.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Доброе время суток друзья Прошу вас ознакомится с данным кусочком кода. 

Код

# 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 я абсолютный ноль..
PM MAIL   Вверх
pizzz
Дата 9.2.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: нет
Всего: 8



3156754 мой icq сделаю за символическую плату.

Я помогаю если человек хочет научиться. А здесь просто сделайте  smile 
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
Ruless
Дата 9.2.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Мдааа... неужели бесплатно помочь никто не может? smile 
PM MAIL   Вверх
enof
Дата 9.2.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



Код

$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())");
}


Добавлено через 1 минуту и 18 секунд
Таблица:
Код

CREATE TABLE ip_table
(
    ip INT UNSIGNED NOT NULL,
    last_date DATETIME NOT NULL,
INDEX(ip),
INDEX(last_date)
);


Это сообщение отредактировал(а) enof - 9.2.2009, 19:17
PM MAIL ICQ Skype   Вверх
pizzz
Дата 9.2.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: нет
Всего: 8



Незабываем чистить эту таблицу  smile 

через месяц таблица будет пару гигабайт

Добавлено через 7 минут и 41 секунду
ну и запрос last_date + INTERVAL 1 DAY > NOW()

Проще unix дату юзать. Конструкции будут меньше. скорость больше. 

И поправьте меня если я ошибаюсь, INDEX(ip), INDEX(last_date), разве будет работать? Ведь в запросе мы юзаем сразу два поля, а не одно
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
Ruless
Дата 9.2.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



enof  большое спасибо smile)) сейчас буду пробовать smile))
PM MAIL   Вверх
enof
Дата 9.2.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



pizzz,  smile специально не упоминалось, ибо существует центр помощи для таких случаев + 100% последовал бы вопрос, как чистить.
PM MAIL ICQ Skype   Вверх
pizzz
Дата 9.2.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: нет
Всего: 8



Прошу помочь так как в PHP я абсолютный ноль..


Проблема бы возникла пост фактум. А я привык смотреть вперед.

Как видишь вопроса как чистить не последовало  smile 
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
Ruless
Дата 9.2.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



Цитата(enof @ 9.2.2009,  19:32)
 smile специально не упоминалось, ибо существует центр помощи для таких случаев + 100% последовал бы вопрос, как чистить.

Буду оочень благодарен если расскажеш про то как чистить smile)) и еще вопросик товой  код полностью заменяет мой? или его следует поместить вместо условия в моем коде? сори за глупый вопрос но просто в php совершенно не шарю...
 smile 
PM MAIL   Вверх
enof
Дата 9.2.2009, 19:59 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



pizzz, По mysql ничего не могу сказать, так как не шарю.

Ruless, 
TRUNCATE либо DROP TABLE.
Ну можно еще написать скрипт,который будет удалять все записи,старше суток и повесить его на крон.
А код да, поместить вместо условия, только до этого должно быть соединение с базой.

pizzz,  smile 
PM MAIL ICQ Skype   Вверх
pizzz
Дата 9.2.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: нет
Всего: 8



DROP TABLE. удалит таблицу. что делать ненадо я думаю


--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
enof
Дата 9.2.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



pizzz, Нормально все, зато потом может быть появится желание учиться, или придет осознание того, что кодеры тоже хотят хавать, и нахаляву 
редко кто полностью все сделает за тебя.
PM MAIL ICQ Skype   Вверх
Ruless
Дата 9.2.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



таакс спасио smile) щас попробую заставить все это работаь smile
PM MAIL   Вверх
pizzz
Дата 9.2.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: нет
Всего: 8



enof, тоже вариант  smile 
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
Ruless
Дата 10.2.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 9.2.2009

Репутация: нет
Всего: нет



а если убрать проверку даты? 
Код

$result = mysql_query("SELECT COUNT(*) as cnt FROM ip_table WHERE ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."') ");
$cnt = mysql_result($result,0,'cnt');
if($cnt > 0)
{
    $downloadrule[dl_points]=0;
}else
{
    mysql_query("INSERT INTO ip_table(ip) VALUES(INET_ATON('".$_SERVER['REMOTE_ADDR']."'))");
}

Код

CREATE TABLE ip_table
(
    ip INT UNSIGNED NOT NULL,
  
INDEX(ip),

);


и очищать таблицу раз в 24 часа, например в 00:00? Подскажите пожалуйста как организовать такую очистку..  smile 
Ps. В коде мог что то попутать...

Это сообщение отредактировал(а) Ruless - 10.2.2009, 15:40
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0821 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.