За последние 24 часа нас посетили 16803 программиста и 1693 робота. Сейчас ищут 892 программиста ...

запрет повторного голосования

Тема в разделе "PHP для новичков", создана пользователем dimon76, 17 июн 2011.

  1. dimon76

    dimon76 Активный пользователь

    С нами с:
    2 июн 2011
    Сообщения:
    24
    Симпатии:
    0
    всем привет!
    помогите советом - сделал голосовалку небольшую
    PHP:
    1.  
    2. $vote = $_POST['score'];
    3. if(!isset($vote)) {$vote = 0;}
    4.     mysql_query("INSERT INTO `vote` (`id`,`tid`,`score`) VALUES (NULL,$tids,$vote)",$db);
    5.    
    6.     $outVote = mysql_query("SELECT `id`,`tid`,SUM(`score`) sc FROM vote WHERE `tid` = $tids GROUP BY `tid`",$db);
    7. $sumVote = 0;
    8.     while($outV = mysql_fetch_assoc($outVote)){
    9.    
    10.     $sumVote = ($sumVote + $outV['sc'])/$total;
    11.    
    12.     echo "Рейтинг :".round($sumVote,2);}
    13.  
    14. <form  method='post'>
    15.         <div>Пожалуйста, оцените:</div>
    16. <div>
    17. <input type="radio" checked="checked" value="5" name="score">
    18. 5
    19. <input type="radio" value="4" name="score">
    20. 4
    21. <input type="radio" value="3" name="score">
    22. 3
    23. <input type="radio" value="2" name="score">
    24. 2
    25. <input type="radio" value="1" name="score">
    26. 1
    27. </div>
    28. <input class="button" type="submit" value="проголосовать!">
    29. </form>
    30.  
    вопрос в следующем - как запретить голосовать по нескольку раз на одну новость?
     
  2. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    самое простое - вешать куку (функция setcookie()), например, с id новости, а при приеме ПОСТ-запроса смотреть, нет ли этой самой куки в суперглобальном массиве $_COOKIE
     
  3. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    самое глупое

    т.к можно легко накручивать.

    Передавай в таблицу ip пользователя который проголосовал и проверяй на http://php.net/manual/ru/function.mysql-num-rows.html или значение mysql_query на true
    Если есть уже ип юзера там то не учитывать голос.

    Лучше всего сделать кукисами input radio неактивными если юзер проголосовал, а php уже проверять. или и на php сделать это можно просто :)