Всем привет!
Я знаю, что использование IP-адресов - не лучший вариант для системы голосования, но в моем случае это нормально!
Чего я хочу добиться: администратор может задать вопрос для опроса. Пользователи отвечают на вопрос и могут голосовать за каждый ответ ежедневно, используя свой IP-адрес.
Что у меня есть: администратор может задать вопрос для опроса. Пользователи могут ответить на вопрос, используя свой IP-адрес один раз. (вы можете проголосовать только один раз за каждый IP-адрес)
База данных: Параметры таблицы: идентификатор и имя Это таблица, в которой хранятся ответы на опрос. Таблица избирателей: id, option_id, ip, today и number Это таблица, содержащая IP-адрес избирателя, ответ, за который он хочет проголосовать, дату, когда он проголосовал (еще не работает), и число, которое используется для получения общей суммы. голосов.
У меня есть 3 файла php: muziek.php, insertM.php и vote.php
muziek.php показывает вопрос и ответ опроса.
insertM.php позволяет пользователям вставлять ответ на опрос.
Vote.php осуществляет голосование по опросу. Люди могут использовать свой IP-адрес только один раз, теперь я хочу сделать так, чтобы люди могли использовать свой IP-адрес ежедневно.
голосование.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());
}
}
}
Мне нужно отслеживать день и проверять, совпадает ли текущая дата с датой в базе данных голосующего пользователя. Если это не то же самое, пользователь сможет проголосовать снова, и будет установлена новая дата.
Спасибо за прочтение! Пожалуйста, спросите меня, хотите ли вы, чтобы я разместил еще код.
m/d/Y
- это, безусловно, наименее стандартный формат, который доставит вам проблемы, если вы работаете сDATE
столбцом MySQL. Вы должны использоватьY-m-d
. - person sjagr   schedule 20.01.2015