Блокировка повторного голосования

Рейтинг: 1Ответов: 2Опубликовано: 26.12.2014

Друзья, нужно сделать блокировку на повторное голосование! Вот скрипт вывода данных! Подскажите вариант!

<?php

            include ('admin/db.php');

            $query = "SELECT * FROM items"; 
                    $res = mysql_query($query) or die(mysql_error()); 
                    $number = mysql_num_rows($res);

            { 
                    echo ("<center><table class=\"simple-little-table\" cellspacing='0'>
                    <tr>
                    <th>Логотип </th>
                    <th>Категория</th>
                    <th>Описание</th>
                    <th>Голоса</th>
                </tr>
                "); 
                    while ($row=mysql_fetch_array($res)) 
                    {  
                        $id = $row['id'];
                        $cat = $row['category']; 
                        $img = $row['logo'];  
                        $descryp = $row['descryp']; 
                        $vote = $row['vote'];

                        echo "<tr><td><img src=\"img/organizations/$img\" width=\"50px\" ></td> <td>$cat</td> <td>$descryp</td> <td><span class='votes_count' id='votes_count$id'>$vote</span><br>
                                <span class='vote_buttons' id='vote_buttons$id'>
                                <a href="#" class='vote_up' id='$id'>Голосовать</a> 
                                </span> </td></tr>";
                    }
                    echo ("</table></center>");       
                    }

        ?>

Ответы

▲ 4Принят

Диапазон «строгости» запрета на повторное голосование довольно широк: от авторизации через портал ГосУслуг – т.е. фактически по паспорту, ИНН и прочим настоящим документам – до простой установки куки при первом голосовании.

Определитесь, что нужно в данном случае. Какое кол-во голосующих ожидается. Какова приемлемая стоимость на верификацияю каждого голоса (можно привязываться к номеру мобильного и отправлять смс)? Можно бесплатно привязываться к email (заодно соберёте базу адресов). : )

В простейшем случае с обычной куки, алгоритм такой:

  1. Пришёл человек. Смотрите, есть ли у него куки, говорящие, что он уже голосовал? Есть – говорите "Спасибо, вы уже". Нет – показываете страницу, на которой можно голосовать и создаёте уникальное значение, которое сохраняете в сессии + показываете в скрытом поле формы голосования.
  2. При приёме голоса сравниваете переданное значение скрытого поля с тем, что в сессии. Если совпали - голос можно засчитать. И тут же в сессии снять/поменять этот ключ! Ставим куки "чел проголосовал", и показываем страницу "Спасибо, ваш голос учтён".
▲ 1

Если голосование проводится среди пользователей сайта, то можно записывать их ID, а потом делать проверку на наличие голоса. Если же проводится среди гостей, то записывать IP и также делать проверку.