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

Webrusher

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

Привет, пробовал искать на форуме, не нашел ответа.
Я пишу примитивную доску объявлений, сам код готов, вот только одна проблема- спам объявлений. В связи с этим необходимо поставить ограничение на вставку объявлений от одного пользователя не больше 2-х в сутки. Каким образом это можно сделать? Спасибо за советы.
 
Webrusher объявления могут постить только зарегистрированные пользователи, тогда можно осуществлять контроль количества сообщений от одного пользователя.
 
rotoZOOM
А какая разница? Проблема остается. Гостям - пусть вводят картинку, а пользователи пусть введут при регистрации, а потом лимит.
 
WP а как ты собрался отслеживать
ограничение на вставку объявлений от одного пользователя не больше 2-х в сутки.
для гостей.
Кукисы чтоли ставить ?
IMHO более менее надежный способ - это регистрация.
 
не хотел использовать куки, т.к. их можно подделать, другого выхода нет?
есть доска объявлений, просто надо ограничиться от спама, и поставить лимит 2 сообщения от одного незарегестрированного пользователя
 
спс, возможно ли такое решение...
создать таблицу '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 стал тока недавно, так что рад любому совету
 
Любое идентифицирование пользователя по заголовкам переданным извне никогда не даст 100% гарантию.
Тем более по REMOTE_ADDR. У многих пользователей может быть один и тот же ремоте адрес (прокси).
 
Для надежности определения пользователя неплохо увеличить количество данных о пользователе и хранить не всю строку, а только ее хэш.

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

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

С точки зрения производительности в запросе лучше делать SELECT COUNT(*), а не SELECT * с последующим num_rows
 
Mikle Heavy для какой надежности ? Вся твоя надежность легко будет обходиться генераторами заголовков - это раз. Во-вторых, многие обычные сознательные граждане не смогут запостить свою объяву даже один раз на дню, так как у кого-то, кто уже запостил такой же юзер агент, чарсет и тот же прокси.
 
Автор оригинала: rotoZOOM
Во-вторых, многие обычные сознательные граждане не смогут запостить свою объяву даже один раз на дню, так как у кого-то, кто уже запостил такой же юзер агент, чарсет и тот же прокси.
Универсального решения нет. Все возможные варианты - это компромисс между надежностью и удобством использования.
Надежность этого решения - низкая. Давайте пофантазируем на эту тему. Например установим интервал между отправками сообщений от пользователей с совпавшими fingerprint. Например не чаще 1 сообщения в 2 часа. Или в три или в четыре. Неподходит? Фантазируем дальше.... И так до тех пор, пока нас и пользователей не устроит получаемый алгоритм.
 
Не надо фантазировать, такое ограничение количества сообщений повредит обычным пользователям.
Лучше captcha ничего не видел.
 
Webrusher
да сделай просто такое правило - и все. на словах.

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