Контроль на количество вставок объявлений в сутки от одного пользователя

Webrusher

Новичок
Контроль на количество вставок объявлений в сутки от одного пользователя

Привет, пробовал искать на форуме, не нашел ответа.
Я пишу примитивную доску объявлений, сам код готов, вот только одна проблема- спам объявлений. В связи с этим необходимо поставить ограничение на вставку объявлений от одного пользователя не больше 2-х в сутки. Каким образом это можно сделать? Спасибо за советы.
 

rotoZOOM

ACM maniac
Webrusher объявления могут постить только зарегистрированные пользователи, тогда можно осуществлять контроль количества сообщений от одного пользователя.
 

WP

^_^
rotoZOOM
А какая разница? Проблема остается. Гостям - пусть вводят картинку, а пользователи пусть введут при регистрации, а потом лимит.
 

rotoZOOM

ACM maniac
WP а как ты собрался отслеживать
ограничение на вставку объявлений от одного пользователя не больше 2-х в сутки.
для гостей.
Кукисы чтоли ставить ?
IMHO более менее надежный способ - это регистрация.
 

Webrusher

Новичок
не хотел использовать куки, т.к. их можно подделать, другого выхода нет?
есть доска объявлений, просто надо ограничиться от спама, и поставить лимит 2 сообщения от одного незарегестрированного пользователя
 

Webrusher

Новичок
спс, возможно ли такое решение...
создать таблицу 'adver' с полями (id, date_m, adress), где
$adress = getenv ("REMOTE_ADDR"); // проверка ip
$date_m= date("Ymd"); //текущая дата
при создании объявления, создать запрос:
$result="SELECT * from 'adver' where adress='$adress' and date_m='$date_m'";
если mysql_num_rows >=2, то блокировать, если нет, то
1)вставить само объявление
2)вставить в таблицу 'adver' значения $adress, $date_m

изучать php стал тока недавно, так что рад любому совету
 

rotoZOOM

ACM maniac
Любое идентифицирование пользователя по заголовкам переданным извне никогда не даст 100% гарантию.
Тем более по REMOTE_ADDR. У многих пользователей может быть один и тот же ремоте адрес (прокси).
 

Mikle Heavy

Новичок
Для надежности определения пользователя неплохо увеличить количество данных о пользователе и хранить не всю строку, а только ее хэш.

<?php
$fingerprint = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['HTTP_ACCEPT_CHARSET'].$_SERVER[REMOTE_ADDR]);
?>

И хранить эту инфу в таблице бд. И сравнивать с данными, полученными от клиента. Если хэш совпал - "НУ, извини, друг, ты уже был у нас сегодня".

С точки зрения производительности в запросе лучше делать SELECT COUNT(*), а не SELECT * с последующим num_rows
 

rotoZOOM

ACM maniac
Mikle Heavy для какой надежности ? Вся твоя надежность легко будет обходиться генераторами заголовков - это раз. Во-вторых, многие обычные сознательные граждане не смогут запостить свою объяву даже один раз на дню, так как у кого-то, кто уже запостил такой же юзер агент, чарсет и тот же прокси.
 

Mikle Heavy

Новичок
Автор оригинала: rotoZOOM
Во-вторых, многие обычные сознательные граждане не смогут запостить свою объяву даже один раз на дню, так как у кого-то, кто уже запостил такой же юзер агент, чарсет и тот же прокси.
Универсального решения нет. Все возможные варианты - это компромисс между надежностью и удобством использования.
Надежность этого решения - низкая. Давайте пофантазируем на эту тему. Например установим интервал между отправками сообщений от пользователей с совпавшими fingerprint. Например не чаще 1 сообщения в 2 часа. Или в три или в четыре. Неподходит? Фантазируем дальше.... И так до тех пор, пока нас и пользователей не устроит получаемый алгоритм.
 

AmdY

Пью пиво
Команда форума
Не надо фантазировать, такое ограничение количества сообщений повредит обычным пользователям.
Лучше captcha ничего не видел.
 

Фанат

oncle terrible
Команда форума
Webrusher
да сделай просто такое правило - и все. на словах.

кто нарушил - бан по реквизитам.
им же самим будет невыгодно нарушать.
 
Сверху