Forum Webscript.Ru
Программирование => PHP => Тема начата: Abram от 22 Февраля 2005, 12:26:26
-
Посоветуйте сделать голосование правильно чтобы один человек голосовал только 1 раз. Получается по айпи не отловишь так как например дома я выхожу в интернет всегда под разным айпи, а на работе вся фирма работает через прокси, тоесть постоянно с одним айпи. Что делать?
-
Куки ставь.
-
А что в куку писать? Мне нужно как-то идентифицировать каждого посетителя
-
Так что тебе нужно?
Abram:
А что в куку писать? Мне нужно как-то идентифицировать каждого посетителя
или
Abram:
чтобы один человек голосовал только 1 раз
Чтобы человек голосовал только один раз, ставь ему куку, название которой = номеру голосования, а значение - любое. И проверяй, если у человека есть такая кука, то он уже голосовал, если нет, то, вероятнее всего, не голосовал.
Если тебе нужно идентифицировать пользователя, то при заходе на сайт заводи сессию, или ставь ему куку с уникальным именем. Но это уже другая тема.
-
ставь ему куку, название которой = номеру голосования, а значение - любое.
Что-то типа такого:
if (isset($_COOKIE["voted"])){
// пользователь уже проголосовал
}else{
// пользователь еще не голосовал
setcookie ("voted","1",time()+60*24*3600);
}
Тогда получается что он вытрет свою куку то сможет еще раз проголосовать?
А если куки отключены?
-
Abram
Только не $_COOKIE["voted"], а куки $_COOKIE["voted".$vote_id], т.к. голосования время от времени меняются.
Abram:
А если куки отключены?
Тогда не будет работать.
-
Прочитав кучу всяких идей пришел в кыводу:
1. Запретить голосвание с анонимных проксей, тоесть если HTTP_VIA!=\'\'
2. нужно создать таблицу с REMOTE_ADDR
+использование кук
Алгоритм:
if (HTTP_VIA!=\'\')
{
if (!isset($_COOKIE["voted"])){
select f_forw from table where remote=REMOTE_ADDR
if($mysql_num_rows==0)
{ПРИНИМАЕМ ГОЛОС}
Что скажете?
Что значит HTTP_X_FORWARDED_FOR ? Может его еще прикрутить ?
-
Вот какая мысль по этому всему. Скажите мне я прав или нет и может можна еще лучше придумать:
Когда голосует пользователь проверяем есть ли у него кука. Если нет проверяем есть ли его айпи в базе, если нет айпи пишем его в базу и ставим куку до той даты до которой идет конкурс.
Если он решит проголосовать, и перед этим вытрет кукис, у нас есть его айпи и я его отловлю.
Что скажете???
-
Abram
а зачем куку ставить ? Все равно по IP проверяешь ?