За последние 24 часа нас посетили 30439 программистов и 1802 робота. Сейчас ищут 786 программистов ...

недопустимые слова или символы в комментариях

Тема в разделе "PHP для новичков", создана пользователем bybad, 24 ноя 2011.

  1. bybad

    bybad Активный пользователь

    С нами с:
    31 июл 2011
    Сообщения:
    25
    Симпатии:
    0
    Недавно доделал и опубликовал свой сайт, делал его с нуля, не зная PHP и естественно имеются недочёты.
    Сейчас меня интересует защита от спама в комментариях.
    На большинстве страниц есть форма для отправки комментариев, выглядит она таким образом:
    [​IMG]
    Естественно капча тут говорит сама за себя, т.е. говорит о полном отсутствии капчи, имхо такую любой робот обойдёт.
    Вопрос в том - как сделать проверку на определённые символы или слова ?
    Хочу, что бы допустим если посетитель решит оставить ссылку и впишет в форму какой нибудь адресс http://www.php.ru/ , проверка не давала опубликовать и занести в базу сообщения которые содержат http:// и href=.

    Подскажите как это реализовать.
    На данный момент у меня в файле проверки используются только trim, stripslashes и htmlspecialchars.
     
  2. kotyara

    kotyara Активный пользователь

    С нами с:
    17 фев 2010
    Сообщения:
    163
    Симпатии:
    0
  3. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
  4. bybad

    bybad Активный пользователь

    С нами с:
    31 июл 2011
    Сообщения:
    25
    Симпатии:
    0
    Мне не убрать надо а проверить, если в строке присутствует http тогда не заносить информацию в базу.

    Спасибо за ссылки и варианты - изучаю.

    Если есть ещё варианты, пишите - хочу рассмотреть все возможные.

    Капча пока пусть такая повисит - со временем заделаю как надо ))
     
  5. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Если нужно узнать есть ли в комментарии ссылки, то достаточно воспользоваться стандарными функциями PHP для поиска подстроки в строке, если же нужно узнать есть ли какой-либо HTML-код в комментарии, то что-то вроде такого
    PHP:
    1. <?php
    2. $string = 'some text with unsafe HTML like <script>tra-ta-ta</script> or <a href="bla-bla">bla-bla</a>';
    3. if (preg_match ('/<(.*?)>(.*?)<\/(.*?)>/is', $string, $matches)) die ('Unsafe string!');
    , что можно расширять при необходимости, также стоит дополнительно делать фильтрацию, на всякий случай :)
     
  6. bybad

    bybad Активный пользователь

    С нами с:
    31 июл 2011
    Сообщения:
    25
    Симпатии:
    0
    сейчас прописал
    PHP:
    теги не проходят, но если человек просто впишет адрес, допустим http://www.php.ru/ как сделать проверку на наличие слова http ?
    не могли бы вы дать комментарии к каждой строке ?
    PHP:
    1. <?php
    2.  error_reporting (E_ALL);
    3.  $string = 'some text with unsafe HTML like <script>tra-ta-ta</script> or <a href="bla-bla">bla-bla</a>';
    4.  if (preg_match ('/<(.*?)>(.*?)<\/(.*?)>/is', $string, $matches)) die ('Unsafe string!');
    просто я новичок в этом деле и много ещё не знаю.
    Буду очень признателен.
     
  7. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
  8. bybad

    bybad Активный пользователь

    С нами с:
    31 июл 2011
    Сообщения:
    25
    Симпатии:
    0
    У меня в обработчик "прилетает" переменная $text в которой допустим есть следующее содержание спама: "заходите на мой сайт http://мойсайт.ru/ там много интересного" - как сделать проверку на наличие http:// в сообщении и отказать в его публикации?

    Надо сделать как то так: если в переменной $text присутствует слово http:// уничтожить эту переменную, дальше у меня идёт проверка на несуществующую переменную и выводится сообщение о том что что то не так. как проверить сообщение ?
     
  9. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    PHP:
    1. <?php
    2. $string = 'bla-bla [url=http://www.google.com/]http://www.google.com/[/url] bla-bla';
    3. if (strstr ($string, 'http://')) $string = '';
    Можно было бы посмотреть ссылку, которую я дал выше, к тому же, по тому адресу написано все на русском...
     
  10. bybad

    bybad Активный пользователь

    С нами с:
    31 июл 2011
    Сообщения:
    25
    Симпатии:
    0
    Благодарю, огромное человеческое спасибо - всё работает !