Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Делаю фотоконкурс. помощь с ограничением по времени голосования / 21 сообщений из 21, страница 1 из 1
16.05.2012, 10:37:35
    #37796543
GeoNat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Здравствуйте, доделываю скрипт конкурса фотографий! и вот в чём загвоздка! принимаю голос по ИП после конечно же у него больше нет прав голосовать! хочу сделать так что бы ИП блокировался на определённое время! допустим хочу чтобы голос можно было отдавать через час,два,день! вы поняли! хочу назначит период за отдавание голоса! подскажите как можно сделать такое при помощи PHP+MYSQL . с базой это дело связано а то смотрел разные примеры и там всё в куках или сессиях!
С Уважением, GeoNat!
...
Рейтинг: 0 / 0
16.05.2012, 11:15:51
    #37796614
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
GeoNat,

храните в БД IP и дату голосования.
при попытке голосования смотрите голосовал ли данный адрес, и если да - то прошел ли заданный вами промежуток времени.
если прошел учитываем голос и обновляем в базе время голосования для данного адреса.
если период не прошел - сообщаем что так часто голосовать нельзя
...
Рейтинг: 0 / 0
16.05.2012, 16:28:22
    #37797413
GeoNat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
r u,

спасибо я так и делаю! меня больше интурисует функция . вычисления периода! можете показать пример?! )
...
Рейтинг: 0 / 0
16.05.2012, 16:29:55
    #37797417
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
...
Рейтинг: 0 / 0
16.05.2012, 16:36:36
    #37797428
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Если использовать СУБД то это не пригодится, зачем сбивать столку?
...
Рейтинг: 0 / 0
16.05.2012, 16:54:10
    #37797456
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
HettЕсли использовать СУБД то это не пригодится, зачем сбивать столку?
ибо мы в форуме по php.
...
Рейтинг: 0 / 0
16.05.2012, 17:44:16
    #37797553
GeoNat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Спасибо всем, но вот меня заинтерисовал ответ от Hett

HettЕсли использовать СУБД то это не пригодится, зачем сбивать столку?


Hett, вы можете предложить что то другое?
...
Рейтинг: 0 / 0
16.05.2012, 17:45:32
    #37797555
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
...
Рейтинг: 0 / 0
16.05.2012, 18:37:35
    #37797650
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Код: sql
1.
SELECT COUNT(*) FROM tables_ip WHERE ip = INET_ATON('ваш айпи') AND date_vote + INTERVAL 1 DAY > NOW()
...
Рейтинг: 0 / 0
16.05.2012, 20:23:44
    #37797787
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Hett
Код: sql
1.
SELECT COUNT(*) FROM tables_ip WHERE ip = INET_ATON('ваш айпи') AND date_vote + INTERVAL 1 DAY > NOW()


ну вернет ваш запрос ноль.
это что значит? что с данного адреса никто не голосовал(надо сделать insert) или что таймаут еще не прошел(ничего не надо делать)? ))
...
Рейтинг: 0 / 0
16.05.2012, 21:14:17
    #37797831
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Код: sql
1.
2.
3.
INSERT INTO tables_ip (id, ip, date_vote)
VALUES (NULL, INET_ATON(:ip), NOW())
ON DUPLICATE KEY UPDATE date_vote = IF(date_vote - INTERVAL 1 DAY > NOW(), NOW(), date_vote)



Но лучше так не делать. Вообще я не сказал, что "возьмите этот запрос и используйте его". Свою голову все равно использовать придется же чо.
...
Рейтинг: 0 / 0
17.05.2012, 05:37:18
    #37798088
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Hett,

на уровне приложения как он узнает что вывести юзеру - что его голос учтен или что ему нельзя так часто голосовать или что его голос учтен повторно?
зачем в данном случае логику пихать в бд?
...
Рейтинг: 0 / 0
17.05.2012, 11:47:27
    #37798504
GeoNat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Наверное будет лучше выводить данные из бд и обрабатывать ПХП скриптом как вы и говорите r u ? просто нехочу чтобы БД заморачивалась на такие запросы! или всё таки стоит в БД всё решать?
...
Рейтинг: 0 / 0
17.05.2012, 11:56:15
    #37798525
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
GeoNat,

как хотите. я бы не заморачивался и сделал элементарно
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$timeout = 60*60*3; // 3 hours
$vote = obj('db')->row('SELECT datev FROM votes WHERE ip=?', $ip);
if (!$vote) { // не голосовал
	// добавляем голос в БД
}
else if (time()-$vote['datev'] > $timeout) { // голосовал но таймаут уже прошел
	// обновляем голос в БД
}
else {
	// пишем юзеру что можно голосовать не чаще чем раз в 3 часа
}

...
Рейтинг: 0 / 0
17.05.2012, 11:57:20
    #37798528
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Код: sql
1.
2.
3.
SELECT COUNT(*) cnt, MAX(date_vote) + INTERVAL 1 DAY < NOW() allow_vote
FROM tables_ip 
WHERE ip = INET_ATON('ваш айпи')


не забудьте индексы
...
Рейтинг: 0 / 0
17.05.2012, 12:00:24
    #37798539
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
r u,

возможно еще придется заморачиваться с часовыми поясами.
...
Рейтинг: 0 / 0
17.05.2012, 12:03:48
    #37798549
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Hettr u,
возможно еще придется заморачиваться с часовыми поясами.
зачем?
...
Рейтинг: 0 / 0
17.05.2012, 12:06:19
    #37798558
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
r uHettr u,
возможно еще придется заморачиваться с часовыми поясами.
зачем?
Это я о том, что если работать с time() в php и CURRENT_DATE или NOW() в мускуле.
...
Рейтинг: 0 / 0
17.05.2012, 12:13:29
    #37798576
GeoNat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Спасибо всем огромное! очень помогли )))
...
Рейтинг: 0 / 0
17.05.2012, 12:23:38
    #37798598
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
Hett,

можете выделить преимущества вашего подхода?
...
Рейтинг: 0 / 0
17.05.2012, 12:42:12
    #37798654
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делаю фотоконкурс. помощь с ограничением по времени голосования
r uHett,

можете выделить преимущества вашего подхода?
да особых как бы и нету, мне моя логика кажется нагляднее.

PS^ кстати про time я прогнал, возможно, оно не зависит от временной зоны.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Делаю фотоконкурс. помощь с ограничением по времени голосования / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]