Я создаю форум для веб-сайта и планирую реализовать функцию «Сообщить об этом содержании».
Честно говоря, я не уверен, насколько полезной (буквально необходимой) будет эта функция, поскольку для публикации потребуется учетная запись пользователя (созданная администратором), но решение меня интересует.
Вкратце, это сценарий:
Для всех пользователей будет доступ только для чтения ко всему (неограниченному) контенту на форуме. Для неопознанных пользователей будет кнопка ответа с сообщением о наличии этой кнопки содержимого. Первый будет требовать входа в систему, в то время как я планировал, что второй не будет, чтобы любой мог пометить подозрительный или оскорбительный контент.
Проблема, с которой я столкнулся, в основном заключается в «щелчках роботов» или, скорее, в том, как реализовать систему, чтобы ее не обманули «щелчки роботов».
На ум приходят несколько методов:
1) Пользовательский агент
2) Требуется несколько флагов (в заранее определенный промежуток времени?), Прежде чем реагировать каким-либо образом
3) robots.txt
4) Требование участия человека во второй форме (капча или «укажите причину»)
Что я о них думаю:
1) Ненадежно (как единственное решение)
2) Для этого требуется масса пользователей, что может привести к тому, что событие никогда не сработает
3) Это, вероятно, "правильный" путь, но он будет работать только для тех, кто его уважает
4) Я ненавижу капчу, и требование объяснения может поднять планку слишком высоко, чтобы функция оставалась полезной.
Какие методы (высоко просвещенное) сообщество должно было бы поделиться со мной?
3 ответа
Вы можете добавить «сообщить об этом» <form>
в DOM с помощью javascript appendChild();
.
Это предотвратит рассылку большого количества спама.
Это также помешало бы пользователям, не использующим javascript, увидеть кнопку отчета. Но поскольку эта функция не мешает работе пользователей, это, вероятно, приемлемый вариант.
window.onload = function() {
var f = document.createElement('FORM');
f.method = 'post';
f.action = 'report.cgi';
var b = document.createElement('INPUT');
b.type = 'submit';
b.value = 'Report this';
f.appendChild(b);
document.body.appendChild(f);
}
Примечание.
Атрибут rel="nofollow"
гарантирует, что поисковые системы не «подсчитывают» ссылку, но переходят по ней (да, название предполагает иное).
Если вы хотите, чтобы поисковые системы не касались определенного файла, используйте robots.txt
Примечание 2:
Сообщение о чем-либо - это действие, которое что-то «меняет» на сервере. Таким образом, это не должен быть запрос GET
. Вместо этого должен быть запрос POST
. Другими словами: не используйте <a href"">
, а вместо этого отправьте <form>
с его аргументом method
, установленным на "post"
.
Вы можете просто перенаправить в форму, где пользователь должен указать причину сообщения о содержании. Робот, вероятно, ничего здесь не введет, и форма не будет обработана, если пользователь ничего не ввел.
Вы пропустили, чтобы ссылка была nofollow, но я бы выбрал комбинацию, требующую участия человека (причина, сведения о заявителе) для противодействия роботам и требования ряда флагов, чтобы люди не могли просто помечать людей, с которыми они не согласны / не согласны нравится на форуме.
rel="nofollow"
, но роботы все равно следят за ними, просто они по-другому относятся к ранжированию страниц. en.wikipedia.org/wiki/…
Похожие вопросы
Новые вопросы
robots.txt
Robots.txt (протокол исключения роботов) - это текстовый файл, помещенный в корень домена веб-сайта, чтобы дать инструкции для совместимых веб-роботов (таких как сканеры поисковых систем) о том, какие страницы сканировать и не сканировать, а также другую информацию например местоположение файла Sitemap. В современных рамках может быть полезно программно сгенерировать файл. Общие вопросы о поисковой оптимизации более уместны на сайте веб-мастеров StackExchange.