2015-01-20 3 views
3

Приветствую всех!Ежедневная система голосования с IP

Я знаю, что использование IP-адресов - не лучший способ пойти на голосование, но в моем случае это нормально!

Что я хочу достичь: администратор может задать вопрос для опроса. Пользователи отвечают на вопрос и могут голосовать за каждый ответ ежедневно, используя свой IP-адрес.

Что я до сих пор: администратор может задать вопрос для опроса. Пользователи могут ответить на вопрос, используя свой IP-адрес один раз. (вы можете голосовать только один раз за каждый IP-адрес)

База данных: Параметры таблицы: id и name Это таблица, в которой содержатся ответы на опрос. Табличные избиратели: id, option_id, ip, today и number. Это таблица, в которой хранится ip-адрес избирателя, ответ на который он хочет проголосовать, дата, когда он проголосовал (еще не работает), и номер, который используется для получения общей суммы голосов.

У меня есть 3 PHP файлы: muziek.php, insertM.php и vote.php

muziek.php показывает вопрос и ответ на опрос.

insertM.php позволяет пользователям вставлять ответ на опрос.

vote.php делает голосование за опрос. Люди могут использовать свои ip-адреса только один раз, теперь я хочу сделать так, чтобы люди могли ежедневно использовать свои IP-адреса.

vote.php:

private function _alreadyVote($ip,$today) 
     { 
      $sql = "SELECT * FROM ".$this->_voterTable." WHERE ip='".$ip."' AND DATE(today) = CURDATE()"; 
      $result = $this->_query($sql); 
      return sizeof($result)>0; 
     } 

     //public functions 
     public function vote($optionId) 
     {   
      $ip = $_SERVER['REMOTE_ADDR']; 
      $today = date('Y-m-d'); 

       if(!$this->_alreadyVote($ip,$today)){ 

       $sql ='INSERT INTO '.$this->_voterTable.' (id,option_id,ip,today) '.' VALUES(NULL,"'.mysql_real_escape_string($optionId).'","'.mysql_real_escape_string($ip).'","'.mysql_real_escape_string($today).'")'; 
mysqli_query($conn, $sql); 

       $result = mysql_query($sql,$this->_con); 
       if(!$result){ 
        die('unable to insert'. mysql_error()); 
       } 
      }   
     } 

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

Спасибо за чтение! Пожалуйста, спросите меня, хотите ли вы, чтобы я опубликовал больше кода.

+2

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

+1

Что именно не работает @WardP? Кредиты для написания вопроса с этими деталями, по-видимому, для многих людей сегодня немного сложны. –

+0

Я хочу сделать так, чтобы люди могли голосовать каждый день, теперь они могут голосовать только один раз с их IP-адресом. – ShadowMan

ответ

2

Выполните этот вид запроса, чтобы определить, кастрированный баран комбинации IP-адреса и текущей даты возвращает любые результаты:

$sql = "SELECT COUNT(*) as rowCount FROM ".$this->_voterTable." WHERE ip='".$ip."' AND DATE(latestVoteDate) = CURDATE()"; 

Если это возвращает строки (или сверку) - способность "лиц на голосование должно быть отклонено. Если это не так, голосование может стать возможным. После голосования обновите номер latestVoteDate строки с адресом ip ($ip) до CURDATE().

$conn = mysqli_connect("localhost","my_user","my_password","my_db"); 
$query = mysqli_query($conn, $sql); 
$data = mysqli_fetch_assoc($query); 

if($data['rowCount'] > 0) 
{ 
    die("You are not allowed to vote"); 
} 
else 
{ 
    // Show the voting page or partial 
} 

Затем, когда действие голос на самом деле произошло, обновить строку, которая содержит правильный IP к текущей дате:

$sql = "UPDATE ".$this->_voterTable." SET latestVoteDate = CURDATE() WHERE ip = '" . $ip . "';"; 
mysqli_query($conn, $sql); 
+0

Спасибо за ответ! Не могли бы вы подробнее объяснить, как я могу реализовать это в своем коде? – ShadowMan

1

$ сегодня выглядит пустым в рамках _alreadyVote ($ ф).

Я бы предложил вызвать функцию с двумя параметрами.

_alreadyVote ($ ф, $ сегодня)

+1

Зафиксируем, спасибо! – ShadowMan

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