Показать полную графическую версию : [решено] Проверка голосования по ip.
Доброго время суток !
Нужно решить мне такую задачу:
Есть новость, люди голосуют, нужно, чтоб не голосовали кто уже голосовал.
Немного погуглил ничего не нашёл.
Хочу, чтоб ip заносились в базу mysql потом оттуда вытаскивались и проверялись.
Сейчас застрял на этапе проверки и корректной записи. Плюс не уверен с типом поля для сохранения ip в базе.
Вот что пока есть:
$ip=$row['ip']; // просто из текстового поля заношу всё в переменную
вот тут не знаю, что сделать.
if($ip==$_SERVER['REMOTE_ADDR'])
{
echo "Вы уже голосовали !"
exit();
}
Вот такие скромные успехи )
Хм… Очень странно что вы не чего не нашли в сети. Вот примеры:
http://www.codenet.ru/webmast/php/PHP-Voting.php
http://webdesign.site3k.net/?/conjuncture/append/d/golos.html
Так же имеются большое количество готовых решений
http://script.emanual.ru/?a=23&i=193
[alter]Хм… Очень странно что вы не чего не нашли в сети. Вот примеры: »
Ну так я и не искал практически, спасибо )))) Надеюсь найду, что нужно.
Требуется совет по оптимизации и выявлению глупых мест )))
Вот что сделал:
$id // ид-новости из другой таблицы. Прилетела из голосовалки.
$ip=($_SERVER['REMOTE_ADDR']);
// получил ip
$vote_check=mysql_query("SELECT id FROM ipvot WHERE ipadr='$ip' and idnews='$id'",$db);
//В таблице три поля: id автозап., ipadr это просто text, idnews совпадает с номером новости в другой таблице. Итак, засунули в $vote_check поле id где ipadr=ip и idnews=id новости.
$check = mysql_fetch_array($vote_check);
//Всё это разложили.
$idcheck = $check['id'];
// В $idcheck засунули то что в id.
if
(($idcheck) >0)
//проверил, что $idcheck есть и имеет значение.
{
echo "Вы уже голосовали !";
exit();
}
else
{тут всё делаем и записываем в таблицу ipvot, idnews(номер новости) и ip}
Зачем нужно первое поле, проголосовал человек и ладно.
Как вариант можно просто проверить количество возвращаемых строк.
$vote_check=mysql_query("SELECT COUNT (*) FROM ipvot WHERE ipadr='$ip' and idnews='$id'",$db);
if (mysql_result($vote_check, 0) > 0)
{
echo "Вы уже голосовали !";
exit();
}
else
{тут всё делаем и записываем в таблицу ipvot, idnews(номер новости) и ip}
Если что-то поподробнее -> http://www.mysql.ru/docs/man/Counting_rows.html
Как вариант можно просто проверить количество возвращаемых строк. »
Что то так не работает (
Пробел затесался.
SELECT COUNT<без пробела>(*) FROM ipvot WHERE ipadr='$ip' and idnews='$id'
Пробел затесался. »
Ну вот, совсем другое дело :-)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.