2012-02-23 3 views
2

Я делаю систему голосования на своем веб-сайте.Как избежать голосования на моем сайте PHP

Посетителям не нужно вводить в систему, чтобы проголосовать за понравившийся товар. Но как я могу помешать им нажимать кнопку типа «нравится» или «не нравится» много раз для одного продукта?

Я собираюсь определить IP-адрес посетителя, чтобы избежать спама в голосовании. Это хороший способ?

Спасибо за любые предложения!

+1

без регистрации, ip-адрес - это единственный способ. Даже это не полное доказательство, данное прокси – Henesnarfel

+0

Почему downvotes? Кажется, это очень ответственный вопрос. Что мне не хватает? –

+0

Невозможно остановить одного и того же человека от голосования снова и снова, это плохое программирование по дизайну. Есть много способов убедиться, что «средний» пользователь не продолжает голосовать, но вы не должны программировать вещи для «среднего» пользователя. – donutdan4114

ответ

4

Нет, это нехорошо. Например, IP может распространяться через прокси-колледжи и крупные компании, например.

Вы можете сохранить файл cookie, но это можно легко обойти.

Краткий ответ заключается в том, что контролируемое голосование, вероятно, должно обрабатываться через обработчик входа в систему, а не только для широкой публики. Но если вы хотите оставить его широко открытым для публики, тогда вы должны принять наводнение плохости, которое может прийти с этим решением.

Я бы выбрал хотя бы печенье. Не так много людей заботятся о том, чтобы очистить файлы cookie только до игры в систему голосования, если нет причин.

+0

Спасибо Kai Qing – JaclBlack

1

Создать таблицу базы данных для регистрации пользователей. Colums будет выглядеть

ID | IP | Browser 

ID будет значением автоинкрементируемого

Получить IP со следующей функции (она, конечно, не 100% надежный способ.)

function getIP() { 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { //check ip from share internet 
     $ip = $_SERVER['HTTP_CLIENT_IP']; 
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //to check ip is pass from proxy 
     $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } else { 
     $ip = $_SERVER['REMOTE_ADDR']; 
    } 
     return $ip; 
} 

и браузер с Javascript , Вы можете опубликовать его на стороне php через ajax. (Мы делаем это для повышения надежности обнаружения.)

Затем проверяйте эту таблицу каждый раз, когда пользователь пытается проголосовать. Вы можете искать браузер и ip. Если num_rows> 0, то запретите (уведомлять посетителя) голосование.

1

если не вход/IP, возможно, есть куки-файл и установите его, когда они голосуют.

+0

Да, я буду использовать cookie вместо IP, спасибо за помощь – JaclBlack

Смежные вопросы