PDA

Показать полную графическую версию : [решено] Проверка голосования по ip.


Porecla
17-12-2008, 22:06
Доброго время суток !

Нужно решить мне такую задачу:

Есть новость, люди голосуют, нужно, чтоб не голосовали кто уже голосовал.
Немного погуглил ничего не нашёл.

Хочу, чтоб ip заносились в базу mysql потом оттуда вытаскивались и проверялись.
Сейчас застрял на этапе проверки и корректной записи. Плюс не уверен с типом поля для сохранения ip в базе.

Вот что пока есть:


$ip=$row['ip']; // просто из текстового поля заношу всё в переменную

вот тут не знаю, что сделать.

if($ip==$_SERVER['REMOTE_ADDR'])

{
echo "Вы уже голосовали !"
exit();
}

Вот такие скромные успехи )

][alter
17-12-2008, 22:25
Хм… Очень странно что вы не чего не нашли в сети. Вот примеры:

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

Porecla
17-12-2008, 23:57
[alter]Хм… Очень странно что вы не чего не нашли в сети. Вот примеры: »

Ну так я и не искал практически, спасибо )))) Надеюсь найду, что нужно.

Porecla
19-12-2008, 17:35
Требуется совет по оптимизации и выявлению глупых мест )))
Вот что сделал:

$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}

Igor_I
20-12-2008, 01:35
Зачем нужно первое поле, проголосовал человек и ладно.
Как вариант можно просто проверить количество возвращаемых строк.
$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

Porecla
20-12-2008, 11:19
Как вариант можно просто проверить количество возвращаемых строк. »

Что то так не работает (

Igor_I
20-12-2008, 16:46
Пробел затесался.
SELECT COUNT<без пробела>(*) FROM ipvot WHERE ipadr='$ip' and idnews='$id'

Porecla
21-12-2008, 01:10
Пробел затесался. »

Ну вот, совсем другое дело :-)




© OSzone.net 2001-2012