Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Проверка голосования по ip. (http://forum.oszone.net/showthread.php?t=126300)

Porecla 17-12-2008 22:06 983435

Проверка голосования по ip.
 
Доброго время суток !

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

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

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

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


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

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

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

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

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

][alter 17-12-2008 22:25 983461

Хм… Очень странно что вы не чего не нашли в сети. Вот примеры:

http://www.codenet.ru/webmast/php/PHP-Voting.php

http://webdesign.site3k.net/?/conjun...d/d/golos.html

Так же имеются большое количество готовых решений

http://script.emanual.ru/?a=23&i=193

Porecla 17-12-2008 23:57 983548

Цитата:

[alter]Хм… Очень странно что вы не чего не нашли в сети. Вот примеры: »
Ну так я и не искал практически, спасибо )))) Надеюсь найду, что нужно.

Porecla 19-12-2008 17:35 985072

Требуется совет по оптимизации и выявлению глупых мест )))
Вот что сделал:

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

Зачем нужно первое поле, проголосовал человек и ладно.
Как вариант можно просто проверить количество возвращаемых строк.
PHP код:

$vote_check=mysql_query("SELECT COUNT (*) FROM ipvot WHERE ipadr='$ip' and idnews='$id'",$db);
if (
mysql_result($vote_check0) > 0)
{
echo 
"Вы уже голосовали !";
exit();
}
else 
{
тут всё делаем и записываем в таблицу ipvotidnews(номер новостии ip

Если что-то поподробнее -> http://www.mysql.ru/docs/man/Counting_rows.html

Porecla 20-12-2008 11:19 985530

Цитата:

Цитата Igor_I
Как вариант можно просто проверить количество возвращаемых строк. »

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

Igor_I 20-12-2008 16:46 985687

Пробел затесался.
SELECT COUNT<без пробела>(*) FROM ipvot WHERE ipadr='$ip' and idnews='$id'

Porecla 21-12-2008 01:10 985942

Цитата:

Цитата Igor_I
Пробел затесался. »

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


Время: 03:37.

Время: 03:37.
© OSzone.net 2001-