[ОТВЕТИТЬ]
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
 
общая задача понятна, что вот в этой конкретно строке...
26.03.2015 08:36
aldemko
 
Изначально в этом скрипте была строка
SQL код:
<?if ($_POST['email'] =='' && $_POST['message'] ==''){?>
но в похожем скрипте который говорил о том что поле не заполнено и есть капча
начало было таким
SQL код:
<?if (isset($_POST['email'] =='' && $_POST['message'] =='')) else{?><p class="lnknreg">* &ndash; поля обязательны для заполнения.</p><?}?>
я немного посмотрел, нашел сходство, и решил как то комбинировать.
ничего конечно пока не заработало, затем я начал искать сервисы которые могут помочь - проверка синтаксиса
они отчасти помогли - сказали что ошибка синтаксическая
затем по твоей наводке - выяснилось что пропущена скобка.
26.03.2015 08:57
aldemko
 
так не то скопировал
код с которого я решил начинать что то похожее делать
начинается
SQL код:
<?if(isset($_POST['error_msg'])){echo $_POST['error_msg'];}else{?><p class="lnknreg">* &ndash; поля обязательны для заполнения.</p><?}?>
а не так как в предыдущем посте
26.03.2015 09:14
OlegON
 
Судя по всему, логическая ошибка, пытаешься собрать похожий код из частей вместо того, чтобы сначала придумать алгоритм, которому твой код будет соответствовать.
Еще раз спрашиваю, что ты хочешь сделать в этой строке?
27.03.2015 02:19
aldemko
 
Блин как у тебя сил и терпения хватает возится со мной. спасибо
так как мои познания php крайне малы.
но сравнив 2 срипта и посмотрев на их работу, 1 скрипт который сейчас, 2 скрипт который не нужен но делает то что нужно.
я пошел (как мне казалось) логическим путем - не знаешь php найди отличия
в глаза бросилось различие начало кода без isset и с ним.
Открыв гугл, поискав что делает isset я пришел к выводу что функция проверяет было ли заполнено поле, если нет то выводим то что в else
как то так.
27.03.2015 06:43
Mtirt
 
Вопрос не в том, чтобы понять, что делает второй скрипт.
Вопрос, что ты хочешь получить в итоге?
Только не словами "хочу капчу", а примерно так, надо сравнить значение, которое ввел пользователь в поле ХХХ с значением YYYY.
27.03.2015 07:42
aldemko
 
Изначально хотел просто капчу прикрутить.
затем пару раз отправив письмо, я понял что поле имя и емейл можно писать разный бред.
в том числе емейл в виде 11111
получается что нужно проверять имя, емейл и капчу (или как рекомендовал Олег) галочку мол я не бот
27.03.2015 07:46
OlegON
 
Я тоже не силен в PHP, поэтому и разбираемся.
Но в твоем коде нет логики, независимо от языка. Во-первых, если выставлена переменная, то ошибка, если нет - другая. Во-вторых, проверь, мне кажется, тебе empty() больше подходит. isset по разному работает в разных версиях PHP и я не уверен, что оно ловит "", т.е. пустую строку. Переменную можно задать пустой, что не подходит в твоем случае, как я могу догадываться.
27.03.2015 07:47
OlegON
 
И да, вот еще решение похожей проблемы Антиспам для форума FluxBB
30.03.2015 03:34
aldemko
 
Посмотрел, вроде то что нужно, но куда его себе подсунуть ?
не осталось ли полного кода с той темы, что бы хотя бы посмотреть что где стояло и что было изменено для результата.
Вот трюк с галочкой думаю самое то будет
30.03.2015 06:43
OlegON
 
Кода не осталось, но это форум FluxBB 1.5.7 был, можешь его скачать и посмотреть, что рекомендовал исправить. Только я не рекомендую идти по пути сравнивания и вычисления разницы. У тебя форма отправки сообщения. Разбери ее. Суть формы в HTML - описание полей типа
<input
<input
<input
<input
когда ты нажимаешь кнопку отправки, все эти поля уезжают в POST или GET - переменные.
Сделай где-нибудь себе пример формы и разбери ее, тогда и поймешь, что куда подсовывать.
30.03.2015 08:52
aldemko
 
и галочку эту нужно будет к POST или еще к чему то привязать ?
так то форму галочки добавил. но обязательная она не делается
30.03.2015 09:10
OlegON
 
жаль, что не читаешь, что я тебе пишу...
форму когда делаешь, создаешь еще один input, галочку
потом, когда POST проверяешь, переменную галочки проверяй.
30.03.2015 09:29
aldemko
 
Так я прочитал, как ее проверить, пока не понял
мой скрипт, вообще отправляет все письма даже не заполненные поля
на мейл приходит

письмо:
Вопрос по техники с сайта

Контактная информация:

Дата отправки 30.03.2015 09:28
Имя отправителя:
Эл. почта отправителя:
Tema вопроса: #1946 Yamaha XLT1200 2004г 103м/ч цвет: красный-белый, двигатель 2-х тактный, 1176 куб. см, 155 л/с. Реверс. На складе во Владивостоке Договорная
IP ползователя: 46.37.152.185
------------------------------------------------------------------
Собственно сам вопрос:
30.03.2015 10:03
OlegON
 
Еще раз, сделай себе где-то форму и пойми, как она работает для начала.
30.03.2015 10:05
aldemko
 
Ура товарищи ! я победил это зло
Обошлось без PHP
Старый добрый HTML помог.

Есть тег [COLOR="rgb(46, 139, 87)"]required[/COLOR] который как раз отвечает за заполнение поля
содрал с учебника пример
<input type="checkbox" name="option2" value="a2">Значение<br>

в итоге мой первый скрипт выглядит так

<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></td>
<td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input required type="checkbox" name="option2" value="a2">Установите флаг, если хотите продолжить<br> </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>
30.03.2015 10:06
aldemko
 
Блин забыл тег SPL поставить. Олег можешь это удалить а предыдущее сообщение там где скрипт в спойлер поставить. спс
30.03.2015 10:25
OlegON
 
required плох тем, что бот, разбирающий формы, обязательно эту галочку поставит, поскольку ты об этом его предупредил.
30.03.2015 10:30
aldemko
 
не прошло и 5 минут опять спам от бота.
Причем .... спамит с 1 ого итого же IP, видимо прокси сервисами не умеет пользоваться.
Добавил через .htaccess его IP в бан, и буду дальше думу думать как через PHP сделать ибо бот все равно галочку поставит.
30.03.2015 11:28
aldemko
 
Пошел пока дальше

в общем со второго скрипта вырезал необходимые части
пометил красным текстом
Скрипт:
<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></td>
<td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input required type="checkbox" name="option2" value="a2">Установите флаг, если хотите продолжить<br> </td>
</tr>
<tr>
<tr>
<td align="right" valign="top">Секретный код: <font class="lnknreg">*</font></td>
<td style="padding-left: 30px;">
<input class="securecode_input" maxlength="6" type="text" value="" name="securecode" style="border: 1px solid #666666;"/>
<img src="/templates/images/code.php?sc=<?=$this->SecureCode();?>" alt=""/>
</td>
</tr>

<td>&nbsp;</td>
<td style="padding-left: 30px;">
<div class="cleare" style="padding-top: 10px;">
<input type="hidden" name="securecode_hash" value="<?=md5($_SESSION['code']);?>"/>
<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>


Код появляется, постоянно генерируется новый код.
Но код ввести можно любой и проходит.
30.03.2015 12:06
OlegON
 
Приведи сюда полностью пример своей формы, которую ты сделал? В куске чужого кода совсем копаться не интересно.


Опции темы


Часовой пояс GMT +3, время: 18:10.

 

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