Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Программирование

Добавить капчу в простой скрипт обратной связи. Защита от спама ботов : Программирование

19.03.2024 9:45


25.03.2015 09:22
aldemko
 
Доброго времени суток.
Есть ли возможность добавить капчу в простой скрипт обратной связи, без замены его как такового.
если кто то сталкивался с подобным буду рад помощи

Сприпт:
SQL код:
<form action="" method="post">
  <table class="forms" cellpadding="0" cellspacing="0" border="0">
     <?if ($_POST['email'] =='' && $_POST['message'] ==''){?>
    <tr>      
      <td valign="top" colspan="2" style=""><h4 class="lnknreg">Есть вопросы по <?=$data['caption']['value'];?>? Свяжитесь с нами с помощью этой формы или воспользуйтесь услугой <a  class="lnklpass" href="/static/2/?theme=<?=rawurlencode($subject_theme);?>">Перезвонить мне!</a>.</h4></td>    
    </tr>
    <?}else{?>
    <tr>      
      <td valign="top" colspan="2"><p>Ваше сообщение отправлено! Спасибо за Ваш интерес к ресурсу!</p></td>    
    </tr>
    <?}?>
    <tr>
      <td align="right" valign="top" >Ваше имя: </td>
      <td style="padding-left: 30px;"><input maxlength="25" type="text" name="name" value="<?=$_POST['name'];?>" style="border: 1px solid #666666;"/></td>
    </tr>
    <tr>
      <td align="right" valign="top">Ваша эл. почта: </td>
      <td style="padding-left: 30px;"><input maxlength="25" type="text" name="email" value="<?=$_POST['email']?>" style="border: 1px solid #666666;"/></td>
    </tr>
    <tr>
      <td align="right" valign="top">Ваши вопросы относительно <?=$data['caption']['value']?>: </td>
      <td style="padding-left: 30px;"><textarea cols="40" rows="8" style="border: 1px solid #666666;" name="message"><?=$_POST['message'];?></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td style="padding-left: 30px;">
        <div class="cleare" style="padding-top: 10px;">
          <input name="theme" type="hidden" size="50" value="<?=$subject_theme;?>"/>
          <input type="hidden" name="user_ip" value="<?=getenv("REMOTE_ADDR");?>"/>
          <input type="image" src="/templates/images/send.gif" alt="Отправить" class="absmiddle" />
        </div> 
      </td>
    </tr>
  </table>
</form>


сприпт свои функции выполняет, но последнее время спама много приходит
заранее благодарен
25.03.2015 09:26
OlegON
 
Рукотворный спам или ботовый? добавь еще одно поле с непонятным именем, подпиши "На какой планете мы живем (антиспам)", проверяй его на "Земля" и большой процент спама пропадет.
25.03.2015 10:45
aldemko
 
Я пока не знаю какой спам.
Может и тот и тот
нашел еще один скрипт но он немного не так работает как нужно, предыдущий в теле письма отправляет сообщение с какой страницы (товара отправлен) запрос
а этот нет, но это пол беды. сейчас ковыряю дальше.

статика в виде вопроса про землю тоже хорошо, но если спамят специально (конкретный ресурс)то это не есть хорошо
25.03.2015 10:51
OlegON
 
Спам легко классифицируется по скорости открытия и поста формы в журнале.
Проблема капчи в том, что она либо читается уже достаточно большим количеством ботов, либо не читается людьми и бесит их. Я предпочитаю нетиповые вопросы и нестандартно именуемые поля формы. Можешь еще галочку поставить, обозвать ее "я робот", чтобы пользователь ее снимал. Если спамит человек, то это никак не обойдешь, кроме бана его IP.
25.03.2015 11:18
aldemko
 
Начал переделывать первый скрипт
по идее (моей) должно быть что то
SQL код:
<?if (isset($_POST['email'] =='' && $_POST['message'] =='') else{?><p class="lnknreg">* &ndash; поля обязательны для заполнения.</p><?} {?>
но сервис проверки скриптов ругается
Parse error: syntax error, unexpected T_IS_EQUAL, expecting ',' or ')' on line 1

мне дальше ковырять и искать причину, или это заведомо не правильное начало на проверку обязательности заполнения поля ?
спасибо
25.03.2015 11:27
OlegON
 
человеческим же языком пишет, скобки не хватает... две открыл, одну закрыл.
26.03.2015 04:37
aldemko
 
Настало утро думаю приду на работу с чистой головой и разберусь
но не тут то было
Скобку я нашел
хотя было очень глупо вчера ее не найти
получилось
SQL код:
<?if (isset($_POST['email'] =='' && $_POST['message'] =='')) else{?><p class="lnknreg">* &ndash; поля обязательны для заполнения.</p><?}{?>
но онлайн проверка скриптов все равно ругается на ту же ошибку.

может есть у кого простой учебник по данным функциям, с примерами и прочим.
спасибо
26.03.2015 07:27
OlegON
 
Учебник тут не поможет :) видимо, не выспался. В инете куча учебников по PHP и справочников по функциям. Я всегда пользуюсь этим:
isset - проверка того, что переменная установлена. я сейчас только присмотрелся и понял, что не понятно, что ты вообще задумал и зачем.
26.03.2015 08:18
aldemko
 
я вздумал переделать из одного сприпта, на основании другого (который проверяет поля, и так же выводит капчу)
но что то пока без успешно
26.03.2015 08:21
OlegON
 
общая задача понятна, что вот в этой конкретно строке...
Часовой пояс GMT +3, время: 09:45.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.