|
|
|
| Здравствуйте, подскажите как реализовать голосование за видео-ролики (голосовать можно раз в сутки, нужна защита от накрутки). Примеры не нужны, только как это реализовать средствами php и mysql. | |
|
|
|
|
|
|
|
для: margosha
(13.12.2011 в 10:24)
| | а голосовать все могут или только авторизованные пользователи? | |
|
|
|
|
|
|
|
для: Lotanaen
(13.12.2011 в 10:33)
| | все, но только раз в сутки! | |
|
|
|
|
|
|
|
для: margosha
(13.12.2011 в 10:24)
| | я не правильно написала, необходио ставить оценку каждому видео-ролику раз в сутки | |
|
|
|
|
|
|
|
для: margosha
(13.12.2011 в 11:57)
| | ну самое простое это пишите в куки переменную при голосовании со временем действия сутки, а при самом голосовании просто проверяете есть ли такая переменная в куки или нет. Если есть, то голос не засчитываете. | |
|
|
|
|
|
|
|
для: Lotanaen
(13.12.2011 в 12:53)
| | + эти куки прикручивать к определенному ролику, чтобы он еще мог проголосовать за другое видео? правильно? | |
|
|
|
|
|
|
|
для: margosha
(14.12.2011 в 09:32)
| | если много роликов и за все можно проголосовать раз в сутки, то тогда лучше БД использовать, например для распознования привязать пользователя в айпи и при попытке проголосовать проверять как давно он голосовал за данный ролик. У вас же есть таблица роликов в БД? Тогда таблица будет примерно с такими полями : Ид, ИД ролика, айпи пользователя, время голосования. | |
|
|
|
|
|
|
|
для: Lotanaen
(14.12.2011 в 09:58)
| |
CREATE TABLE `member` (
`id` SMALLINT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`surname` VARCHAR( 255 ) NOT NULL ,
`name_video` VARCHAR( 255 ) NOT NULL ,
`link` TEXT NOT NULL ,
`vote` TEXT NOT NULL
) ENGINE = MYISAM ;
CREATE TABLE `vote` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`id_member` SMALLINT( 2 ) NOT NULL ,
`ip` VARCHAR( 255 ) NOT NULL ,
`date` date NOT NULL,
`time` time NOT NULL,
) ENGINE = MYISAM ;
|
| |
|
|
|
|
|
|
|
для: Lotanaen
(14.12.2011 в 09:58)
| |
<?php
$vote = $_POST['vote'];
$ipUser = $_SERVER['REMOTE_ADDR'];
$queryIPVote = mysql_query("SELECT * FROM `vote` WHERE id_member='".$vote."' AND ip='".$ipUser."'");
$resultIPVote = mysql_fetch_array($queryIPVote);
$currentDate = date("Y-n-j");
if ($resultIPVote == 0) {
echo "1. Выводим форму голосования!<br>";
} else {
echo "2. Проверяем дату голосования!<br>";
if ($currentDate == $resultIPVote['date']) {
echo "3. Дата совпала с сегодняшней датой!<br>";
} else {
echo "4. Выводим форму голосования!<br>";
}
}
?>
|
Дальше когда пользователь проголосовал повторно, дата обновляется и он не может голосовать сегодня. | |
|
|
|
|
|
|
|
для: Lotanaen
(14.12.2011 в 09:58)
| | 1. Насколько правильно?
2. Что использовать?
или
| |
|
|
|
|
|
|
|
для: margosha
(15.12.2011 в 15:13)
| | По логике все верно. Использовать нужно тогда $_SERVER['REMOTE_ADDR'] для определения айпи. В таблице я бы поля других типов взял. например не два поля типа DATE и TIME, а одно поле INT.
И если можно, то назначения полей таблицы
CREATE TABLE `member` (
`id` SMALLINT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`surname` VARCHAR( 255 ) NOT NULL ,
`name_video` VARCHAR( 255 ) NOT NULL ,
`link` TEXT NOT NULL ,
`vote` TEXT NOT NULL
) ENGINE = MYISAM ;
|
опишите вкратце. | |
|
|
|
|
|
|
|
для: Lotanaen
(15.12.2011 в 16:16)
| | `id` - айди
`surname` фио участника
`name_video` название ролика участника
`link` ссылка на ролик
`vote` - лишнее поле (у меня будет отдельная таблица голосов) | |
|
|
|
|
|
|
|
для: margosha
(15.12.2011 в 16:42)
| | а ролик только один у каждого участника будет? | |
|
|
|
|
|
|
|
для: Lotanaen
(15.12.2011 в 17:06)
| | да, у каждого участник один ролик (их будет не много, менее 10) | |
|
|
|
|
|
|
|
для: Lotanaen
(15.12.2011 в 17:06)
| | стоит ли прикручивать сессии или куки?
и какие еще есть способы от накрутки? | |
|
|
|
|
|
|
|
для: margosha
(13.12.2011 в 10:24)
| | Такой вопрос: как лучше реализовать топ видео?
Такой вариант: добавить в таблицу member дополнительное поле "Средний балл" и после того как пользователь проголосовал, подсчитать этот средний балл и добавить его в это поле. И после выводить только тройку "лучших" роликов. | |
|
|
|