прикрутить проверку по ip к кнопке

zavu

Старатель
Регистрация
24 Сен 2010
Сообщения
180
Реакции
14
В общем, есть простейшая кнопка. Нажал ее юзер, в бд посчитался +1. Нужно, чтобы нажимать могли ее только раз в сутки, больше ничего от нее не надо. Все примеры, которые находила в гугле - это голосования и прочие рейтинги здоровые, с +/-, а мне бы чего попроще, без наворотов =(

Вот кнопка:

Код:
<form method="post" action=""> <input type="submit" name="flover" value="Цветок"> </form>

if(isset($_POST['flover'])){
     $sql = "UPDATE `characters` SET `flover`=`flover` + 1 WHERE id = $pps";
   mysql_query($sql,$db);
}
function click(){
   $sql = "SELECT flover FROM characters WHERE id = $pps LIMIT 1";
   $res = mysql_query($sql,$db);
   $mas = mysql_fetch_array($res);
   return $mas['flover'];
}
 
Проверку по айпишнику замутить можно конечно
PHP:
//вычисляем ip
 if (!empty($_SERVER['HTTP_CLIENT_IP']))
 {
   $sip=$_SERVER['HTTP_CLIENT_IP'];
 }
 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
 {
  $sip=$_SERVER['HTTP_X_FORWARDED_FOR'];
 }
 else
 {
   $sip=$_SERVER['REMOTE_ADDR'];
 }
но есть прокси=>прокси=>прокси..., анонимные прокси и т.д. и это может стать камнем преткновения... Возможно лучшим вариантом будет оставлять у клиента куки со сроком действия до следующих суток... И при наличии такого куки кнопочку деактивировать... Это тоже не панацея (куки можно потереть или зайти с нескольких браузеров) но все же...
Как вариант можно совметить проверку на куки и айпишник, но это малость геморройный процесс...
 
А вот этот кусок с айпи куда вставить? И нужна будет табличка БД для него? Если можно, для чайников пояснения =)))

С куками был вот такой примерно вариант:

Код:
if (!isset($_COOKIE['cookie']))
{
 echo "<input type="submit" name="flover" value="Цветок">";
}

Но чета как-то оно не смотрится вообще =/
 
На самом деле смысл не в том, смотрится или нет, а работает или нет и как работает!
При варианте с куки затраты на кодинг минимальные(указанный тобой код и все...) А вот при проверке на айпишник нужно:
1) Определить айпишник (код который привёл я или альтернативная функция)
2) Проверить есть ли такой айпишник в базе
3) Если есть такой айпишник, то когда с него последний раз кликали по кнопке
4) Если сегодня с него не кликали или айпишника в базе нет, то показываем кнопку
5) После клика по кнопке, обрабатываем данные формы и записываем айпишник и время клика в отдельную таблицу базы (опять же если такой айпишник в базе есть, то только обновляем время, а если такого нет, то делаем полностью новую запись)
Все это отдельные и порой громоздкие скрипты + привязка к базе данных... Вот и определись для начала что в данном случае наиболее целесообразно. А дальше будет видно...
 
Куки, конечно, проще. Но в случае явной накрутки никак не отследить, откуда там чего взялось =/
А если взять средний вариант? Проверку поставить по кукам, но одновременно просто записывать в БД айпишник того, кто жал кнопку в профиле? На мелкие накрутки мне все равно, зато весь топ я всегда смогу проверить на предмет - это куча народа зашла, или один айпишник куку стирал?
При таком пассивном отслеживании вряд ли много народа сообразят одновременно и куку чистить и проксить. Ну а кто захочет, и так все что угодно обойдет =)
Таким образом, реализация будет примерно такая:

1. проверить куку.
2. если кука позволила голосовать, взять айпишник.
3. занести его в БД (айди того, за кого голосовали/ айпи/ дата голосования).

Как такой вариант? И как его сделать?
 
betatest - исключено. Никаких посторонних ссылок на сайты и левых сервисов. Слава богу, выделенный сервер мне это позволяет.
 
не очень понятно причем тут выделенный сервер, это никакой роли не играет, ну да ладно

вот вам инструкция

здесь готовые, на выбор

дерзайте :)
 
Вы, видимо, плохо прочитали первый пост.
Я гуглила эти ваши ссылки, и многие другие.
Мне не нужны голосования, мне нужна одна единственная функция на определение айпи и занесении его в бд применительно к моей простой кнопке.
"Выдрать" из готовых голосований эту маленькую часть у меня не получается, поэтому я и пишу здесь как бы...
 
В файл который генерит форму вставить ваше:
PHP:
if (!isset($_COOKIE['cookie']))
{
 echo "<form method='POST' action='file.php'><input type="submit" name="flover" value="Цветок"> ...... </form>";
 }
В файл, обрабатывающий форму, вставить:
PHP:
if($_POST['flover']){
//вычисляем ip
if (!empty($_SERVER['HTTP_CLIENT_IP']))
 {
   $sip=$_SERVER['HTTP_CLIENT_IP'];
 }
 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
 {
  $sip=$_SERVER['HTTP_X_FORWARDED_FOR'];
 }
 else
 {
   $sip=$_SERVER['REMOTE_ADDR'];
 }  
//пишем лог кликов в БД
mysql_query("INSERT INTO ip_table SET `ip`='".$sip."', `time`='".time()."', `id_vote`='".$_POST['id_vote']."'");
//+ блок подсчета количества кликов
}
 
  • Нравится
Реакции: zavu
Назад
Сверху