Спустя 8 минут, 41 секунда (5.03.2011 - 01:44) Trianon написал(а):
Цитата (m4a1fox @ 5.03.2011 - 01:35) |
С помощью функции $_SERVER['HTTP_REFERER'] получаю ip юзера. Как реализовать запрос, что бы он (запрос) проверял этот ip среди уже имеющихся в БД? |
$_SERVER - не функция, а массив.
Элемент $_SERVER['HTTP_REFERER'] содержит обычно не ip (и уж всяко не ip пользователя) , а URL-адрес страницы, с которой был выполнен переход на текущую, (или в контексте которой загружается элемент контента) .
Искать его содержимое среди строк таблицы с IP-адресами смысла не имеет.
Спустя 8 минут (5.03.2011 - 01:52) m4a1fox написал(а):
Trianon
Прошу прощение. Вот это $ip = $_SERVER['REMOTE_ADDR'];
Прошу прощение. Вот это $ip = $_SERVER['REMOTE_ADDR'];
Спустя 11 минут, 38 секунд (5.03.2011 - 02:03) Trianon написал(а):
m4a1fox
а таблица как выглядит?
а таблица как выглядит?
Спустя 3 минуты, 13 секунд (5.03.2011 - 02:06) m4a1fox написал(а):
Trianon
5 полей. id, link, ip, vote_up, vote_down. Мне надо сравнить ip и link с теми что будут у меня в скрипте кот. будет заносить данные. Проблема в том, что я не знаю, как мне выполнить проверку. То есть, если такой ip уже есть, и такая link тоже, то нельзя оценивать статью, если же есть такой ip но нет link - тогда модно.
5 полей. id, link, ip, vote_up, vote_down. Мне надо сравнить ip и link с теми что будут у меня в скрипте кот. будет заносить данные. Проблема в том, что я не знаю, как мне выполнить проверку. То есть, если такой ip уже есть, и такая link тоже, то нельзя оценивать статью, если же есть такой ip но нет link - тогда модно.
Спустя 8 минут, 58 секунд (5.03.2011 - 02:15) Invis1ble написал(а):
select count(*) from `table` where `ip`='ip' and `link`='link'
if (mysql_result($res, 0) == 0)
{
// оценивать можно
}
Спустя 58 секунд (5.03.2011 - 02:16) m4a1fox написал(а):
Invis1ble
Ага! Сейчас попробую и отпишусь. Просьбочка... далеко не уходите
Ага! Сейчас попробую и отпишусь. Просьбочка... далеко не уходите
Спустя 8 минут, 6 секунд (5.03.2011 - 02:24) m4a1fox написал(а):
Invis1ble
Ругается вот на эту строчку if (mysql_result($res, 0) == 0). Матом вот таким
Ругается вот на эту строчку if (mysql_result($res, 0) == 0). Матом вот таким
Warning: mysql_result() expects parameter 1 to be resource, boolean given in Y:\home\crimealeaks.com\www\like_unlike.php on line 6. А в общем скрипте вот так делаю -
<?php
include './admin/blocks/db.php';
$ip = $_SERVER['REMOTE_ADDR'];
$view_f = $_SERVER['HTTP_REFERER'];
$res = mysql_query("select count(*) from `table` where `ip`='".$ip."' and `link`='".$view_f."'");
if (mysql_result($res, 0) == 0)
{
mysql_query("INSERT INTO `vote` SET
`link` = '".$view_f."',
`ip` = '".$ip."',
`vote_up` = 1,
`vote_down` = 0
");
}
else
{
mysql_query("INSERT INTO `vote` SET
`link` = '".$view_f."',
`ip` = '".$ip."',
`vote_up` = 0,
`vote_down` = 1
");
}
?>
Спустя 1 минута, 48 секунд (5.03.2011 - 02:26) Trianon написал(а):
m4a1fox
Это довольно самонадеянное решение.
Одинаковый ip вовсе не означает одного и того же пользователя.
Пример:
1.пользователи, которым в разное время был динамически выделен один и тот же IP-адрес.
2. пользователи интернет-кафе, пользователи некоторых домашних и большинства корпоративных сетей, выходящие в интернет через прокси.
3. пользователи GPRS и прочих мобильных средств доступа
и т.п.
Во всех этих случаях один ip присущ нескольким пользователям.
Равно как отличающиеся ip не означают, что пользователи разные.
Пример: человек оставил оценку с домашнего компа, а потом пришел на работу, и оставил её еще раз. Пользователь один - компы и ip - разные.
Это довольно самонадеянное решение.
Одинаковый ip вовсе не означает одного и того же пользователя.
Пример:
1.пользователи, которым в разное время был динамически выделен один и тот же IP-адрес.
2. пользователи интернет-кафе, пользователи некоторых домашних и большинства корпоративных сетей, выходящие в интернет через прокси.
3. пользователи GPRS и прочих мобильных средств доступа
и т.п.
Во всех этих случаях один ip присущ нескольким пользователям.
Равно как отличающиеся ip не означают, что пользователи разные.
Пример: человек оставил оценку с домашнего компа, а потом пришел на работу, и оставил её еще раз. Пользователь один - компы и ip - разные.
Спустя 4 минуты (5.03.2011 - 02:30) m4a1fox написал(а):
Trianon
Это я понимаю... Но этим и жертвую... Это не так строго. Так что важна реализация. Понимаете, я сделал это на cookie благо мне помогал fallow, ему огромное спасибо. Но там оказалась проблемка... Вот. И я решил попробовать реализовать с помощью бд. Вот. Данные я заношу. Но как проверить, что таких уже нет перед тем как заносить - не знаю.
Это я понимаю... Но этим и жертвую... Это не так строго. Так что важна реализация. Понимаете, я сделал это на cookie благо мне помогал fallow, ему огромное спасибо. Но там оказалась проблемка... Вот. И я решил попробовать реализовать с помощью бд. Вот. Данные я заношу. Но как проверить, что таких уже нет перед тем как заносить - не знаю.
Спустя 3 минуты, 7 секунд (5.03.2011 - 02:33) Trianon написал(а):
m4a1fox
недостает проверки
if(!$res) die("Error in sql: ". mysql_error());
А корректная реализация сохраняла бы id [зарегистрированного] пользователя портала, и ориентировалась именно по нему.
недостает проверки
if(!$res) die("Error in sql: ". mysql_error());
А корректная реализация сохраняла бы id [зарегистрированного] пользователя портала, и ориентировалась именно по нему.
Спустя 4 минуты, 1 секунда (5.03.2011 - 02:37) m4a1fox написал(а):
Trianon
Вот такая строка
иначе
Вот такая строка
$res = mysql_query("select count(*) from `table` where `ip`='".$ip."' and `link`='".$view_f."'");получается, что если в итоге $res существует, а в ней соответственно и ip=$ip, и link=$view_f, то скрипт останавливается. вот так
if(mysql_result($res, 0) != 0)
{
echo 'Такое уже было!';
}
иначе
if (mysql_result($res, 0) == 0)
{
mysql_query("INSERT INTO `vote` SET
`link` = '".$view_f."',
`ip` = '".$ip."',
`vote_up` = 1,
`vote_down` = 0
");
}
else
{
mysql_query("INSERT INTO `vote` SET
`link` = '".$view_f."',
`ip` = '".$ip."',
`vote_up` = 0,
`vote_down` = 1
");
}
Спустя 16 секунд (5.03.2011 - 02:38) Invis1ble написал(а):
m4a1fox
Цитата |
Ругается вот на эту строчку if (mysql_result($res, 0) == 0). Матом вот таким Warning: mysql_result() expects parameter 1 to be resource, boolean given in Y:\home\crimealeaks.com\www\like_unlike.php on line 6 |
ну во-первых добавь к запросу or die(mysql_error()). UPD: Trianon опередил =)
во-вторых отдебажь $res (var_dump($res)) и посмотри, что не так
Пс. Кстати, а зачем ты в таблице сделал vote_up и vote_down, ведь они взаимоисключающие, насколько я понял?.. Хватит и одного поля )
Спустя 2 минуты, 7 секунд (5.03.2011 - 02:40) m4a1fox написал(а):
Invis1ble
Извините насчет ошибки... сам недоглядел...
Извините насчет ошибки... сам недоглядел...
Спустя 51 секунда (5.03.2011 - 02:41) m4a1fox написал(а):
Invis1ble
Объясню. Хотел выводить сколько за и сколько против.
Объясню. Хотел выводить сколько за и сколько против.
Спустя 2 минуты, 18 секунд (5.03.2011 - 02:43) m4a1fox написал(а):
Invis1ble
Спасибо. Эту часть задачи - благодаря Вам сделаю... Вроде как и работает!
Спасибо. Эту часть задачи - благодаря Вам сделаю... Вроде как и работает!
Спустя 7 минут, 52 секунды (5.03.2011 - 02:51) Invis1ble написал(а):
m4a1fox
Цитата |
Хотел выводить сколько за и сколько против |
ну можно от общего количества отнимать количество проголосовавших "за", например.
Ну это дело хозяйское, тут нужно выбрать между производительностью и избыточностью данных, имхо..