[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: скрипт голосования
Rustam Karimov
Здравствуйте знатоки PHP, в Интернете нашел скрипт голосования, но в нем отсутствует проверка IP пользователя, то есть есть вероятность повторного голосования, должна быть проверка IP, есть таблица IP, но не знаю как реализовать проверку и занесение нового IP в базу.
PHP
<?php

include("config.inc.php");

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );

mysql_select_db($DB, $link) or die ('Не могу выбрать БД');



//По умолчанию отображаем форму с опросом
if($_POST['do'] =='') {
$q1 = mysql_query("SELECT * FROM tquestions ORDER BY RAND() LIMIT 1");
if(
mysql_num_rows($q1) == '1') {
$r = mysql_fetch_array($q1);

echo $r['question'].'<br/><br/>';

$q2 = mysql_query("SELECT * FROM tanswers WHERE qid='".$r['id']."'");
echo '<form action="" method="post">';
while(
$r2 = mysql_fetch_array($q2)) {

        echo '<input name="answer" type="radio" value="'.$r2['id'].'">'.$r2['answer'].'<br/>';

                                   }
echo '<input name="rid" type="hidden" value="'.$r['id'].'">';
echo '<input name="do" type="submit" value="голосовать">' ;
echo '</form>  ';
}
else {echo 'На данный момент опросов не существует, попробуйте зайти позднее';};

}

//Если кнопка была нажата
if($_POST['do'] != '') {
//Увеличиваем значение

$q3 = mysql_query("UPDATE tanswers SET votes=votes+1 WHERE id='".$_POST['answer']."'");

if(
$q3 != FALSE) {
 //Получаем список ответов
 $q4 = @mysql_query("SELECT * FROM tanswers WHERE qid='".$_POST['rid']."'");
 //Получаем общее количество голосов на этот вопрос
 $q5 = @mysql_query("SELECT SUM(votes) FROM tanswers WHERE qid='".$_POST['rid']."'");
 echo 'Результаты опроса:<br/><br/>';
   while($r = @mysql_fetch_array($q4)) {
        echo '<b>'.$r['answer'].'</b><br/>';
     echo '<div style="height:20px; width:'.round(($r['votes']*100/@mysql_result($q5,0,0))*3).'px; background-image:url(end.jpg);background-color:#2478a8; background-repeat:no-repeat; background-position:right "></div>';
    echo '['.$r['votes'].']<br/>';
       }

}
}




Вот таблици
SQL
CREATE TABLE `ipinfo` (
`id` int(10) NOT NULL auto_increment,
`ip` int(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;


CREATE TABLE `tanswers` (
`id` int(20) NOT NULL auto_increment,
`qid` int(20) NOT NULL,
`answer` varchar(255) NOT NULL,
`votes` int(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=14 ;


CREATE TABLE `tquestions` (
`id` int(20) NOT NULL auto_increment,
`question` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;




Спустя 48 минут, 25 секунд (3.09.2009 - 19:48) glock18 написал(а):
А что будешь делать, если у пользователя IP динамический? думаешь, поможет проверка?

Спустя 1 час, 40 минут, 36 секунд (3.09.2009 - 21:29) Gabriel написал(а):
glock18
а че куками лутше?
лично я даже не представляю как разрешить голосовать 1 раз (если голосование всеобшее)

Спустя 17 минут, 29 секунд (3.09.2009 - 21:46) SunSet написал(а):
Цитата (glock18 @ 3.09.2009 - 16:48)
А что будешь делать, если у пользователя IP динамический? думаешь, поможет проверка?

Не соглашусь.. вчера перед сном листал мануал антихакерского пособия. Там говорилось что ограничивать по кукам голосования не следует, потому что их отключают и голосовалка коту под хвост. (да и я там в теме про куки это писал). И в том и в другом свои минусы, но по айпишнику вродь както посерьезней smile.gif

Спустя 3 часа, 18 минут, 41 секунда (4.09.2009 - 01:05) Gabriel написал(а):
ну а теперь представь 5 человек выходят в нет через один рутер кто и все хотят проголосовать, и в етом случае проголосовать смозет только один,
куки можно нетолько отключить но и почистить.
такчто помоему голосования нужно давать только афторизированным пользователям:)и писать их всех друхно в БД вместе с галочкой голоса рядом с айдишником или ником

Спустя 12 минут, 13 секунд (4.09.2009 - 01:17) SunSet написал(а):
Gabriel
И тут же минус - я никогда бы не стал регаться на сайте чтоб только проголосовать. А некоторые опросники сделаны таким методом, что пока не тыкнешь на чтото то результатов не увидишь. Смотря ж какой еще сайт - если это какаято библиотека виртуальная, где юзер бывает раз в год, то точно не станет там регаться и теряем человека с его голосом. Ну, а если это форум или общалка какаято - то да, можно и нужно по нику уже смотреть и записывать.

А так, даже если юзер не пожелал регистрироваться, так хоть жмякнул на кнопку по своему усмотрению.

Зато при использовании IP погрешность намнооооОООоого меньше чем при куках. Там вообще блин... кнопкой по сабмиту и на Ф5 ставишь мобильник и наслаждаешься laugh.gif

Спустя 9 минут, 35 секунд (4.09.2009 - 01:27) Gabriel написал(а):
а так тупо рутер ребутиш:) laugh.gif
у нас тут както была такая беда с опросом так и не сдлал забросил нада попробовать доделать после того как всю работу пееделаю:-Д и нашли какойто шаровый сервис так я так и непонял как они ставят запрет на голосование но епрст куки вычишали рутер ребутали разрешения меняли браузеры и нифига и спокойно всем офисом могли голосовать unsure.gif
Пы.Сы у знакомого ипшник меняеться сам по себе каждые 5-10 мин вот те тотже мобильник:)

Спустя 16 минут, 9 секунд (4.09.2009 - 01:43) SunSet написал(а):
Gabriel
Пусть хотя бы каждые 2 минуты IP меняется, это уже лучше чем обновляя страницу добавлять +1 голос. Тут уж из худшего нужно выбрать лучшее.
Мож паспортные данные запрашивать и отпечаток пальца? laugh.gif

Спустя 30 минут, 38 секунд (4.09.2009 - 02:14) kirik написал(а):
IP полюбому надежнее в данном случае.

Цитата (Gabriel @ 3.09.2009 - 17:27)
Пы.Сы у знакомого ипшник меняеться сам по себе каждые 5-10

Меняется он все равно в ограниченном диапазоне, при этом один и тот же IP может попадаться одному пользователю несколько раз.

Спустя 2 дня, 23 часа, 20 минут, 50 секунд (7.09.2009 - 01:34) Aspirine написал(а):
пусть оставляет мыло, на мыло приходит ссылка, по ней нужно перейти, чтобы голос засчитался. Мыло уже записалось в файлик и больше из под него нельзя голосовать.
правда это довольно глупый совет)))

Спустя 12 минут, 8 секунд (7.09.2009 - 01:47) SunSet написал(а):
Aspirine
Ага, и число голосовавших всегда будет 0 laugh.gif

Спустя 8 часов, 30 минут, 55 секунд (7.09.2009 - 10:18) DeeKeiD написал(а):
хм может это глупость но, нельзя ли определять MAC адрес через пхп и по нему фильтровать пользователей ?

Спустя 17 часов, 20 минут, 27 секунд (8.09.2009 - 03:38) kirik написал(а):
DeeKeiD
через php/js MAC адрес определить нельзя.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.