Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Captcha для неавторизованного пользователя!

27.03.2013, 10:47
Денис

Зарегистрирован:
2013-03-26
Сообщений: 2

Всех приветствую, с NETCAT знаком недавно поэтому сильно камнями не бросаться. Вопрос в следующем создал компонент, отправка сообщения с сайта с защитой CAPTCHA. Так вот если я авторизован грубо говоря под Admin , то код с картинки принимает и письмо уходит, а если я захожу гостем т.е. обычный посетитель сайта. Каким то образом обходит проверку на правильность Captcha и пишет "Неправильно введены символы, изображенные на картинке". Очень прошу помочь в решении проблемы, уже 3 день голову ломаю что ему надо. Ниже привожу код компонента

Альтернативная форма добавления объекта
------------------------------------------
<div class='ptitle'>Отказаться от <span>СМС - рассылки</span></div>
<form class='addresp' name='adminForm' enctype='multipart/form-data' method='post' action='".$SUB_FOLDER.$HTTP_ROOT_PATH."add.php'>
<input name='admin_mode' type='hidden' value='$admin_mode' />
".$nc_core->token->get_input()."
<input name='catalogue' type='hidden' value='$catalogue' />
<input name='cc' type='hidden' value='$cc' />
<input name='sub' type='hidden' value='$sub' />
<input name='posting' type='hidden' value='1' />
<input name='curPos' type='hidden' value='$curPos' />
<input name='f_Parent_Message_ID' type='hidden' value='$f_Parent_Message_ID' />
".( $warnText ? "<div class='warnText'>$warnText</div>" : NULL )."
<label>
<i>Фамилия (*)</i><input name='f_Surname' type='text' size='50' maxlength='255' value='' />
</label>
<span>".nc_captcha_formfield()."</span>
<label>
<i>Имя (*)</i><input name='f_Name' type='text' size='50' maxlength='255' value='' />
</label>
<input type='text' name='nc_captcha_code' value='' class='captcha'>
<label>
<i>Отчество (*)</i><input name='f_Patronymic' type='text' size='50' maxlength='255' value='' />
</label>
<label>
<i>Контактный телефон (*)</i><input name='f_Phone' type='text' size='50' maxlength='255' value='' />
</label>
<input value='Отправить' type='submit' />
</form>
---------------------------------------------------------------------------
Условия добавления объекта
------------------------------
if(!nc_captcha_verify_code($nc_captcha_code, $nc_captcha_hash) ) {
$posting = 0;
$warnText = "Неправильный код! ($nc_captcha_code, $nc_captcha_hash)";
}
if(!$f_Surname || !$f_Name || !$f_Patronymic || !$f_Phone) {
$posting = 0;
#information text
$warnText = NETCAT_MODERATION_INFO_REQFIELDS;
}
---------------------------------------------------------
Действие после добавления объекта
------------------------------------
";
if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
// значения визуальных настроек
$res = $db->get_var("SELECT CustomSettings FROM Sub_Class WHERE Sub_Class_ID=$cc");
( $res ? eval("\$cc_settings = $res") : $cc_settings = NULL );

// значения визуальных настроек по умолчанию
$res = $db->get_var("SELECT CustomSettingsTemplate FROM Class WHERE Class_ID=$classID");
eval("\$default_cc_settings = $res");

echo "<div class='nc_mail_from_site'>".str_replace("%NAME", $f_Surname.' '.$f_Name.' '.$f_Patronymic , ( $cc_settings[TextAfterSend] ? $cc_settings[TextAfterSend] : $default_cc_settings[TextAfterSend][default_value] ) )."</div>";

$mailer = new CMIMEMail();
$mailer->mailbody(strip_tags("ФИО: $f_Surname $f_Name $f_Patronymic\r\nТелефон: $f_Phone"));
$mailer->send(($cc_settings[EmailTo] ? $cc_settings[EmailTo] : $system_env[SpamFromEmail]), $system_env[SpamFromEmail], $system_env[SpamFromEmail], 'Отказ от СМС - рассылки', $f_Phone );
echo "<br />".$goBack;
}
echo "
-------------------------------------------------------------
27.03.2013, 22:06
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

А что в коде-html сайта видно?

А стандартной капчей пробовали?

Stark
27.03.2013, 22:41
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
А стандартной капчей пробовали?

Это и есть стандартная.


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

Temet nosce...
28.03.2013, 00:49
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Похоже, что это ".nc_captcha_formfield()." не стандартная
Должно же быть так:
Код:
".(!$AUTH_USER_ID && $current_cc['UseCaptcha'] && $MODULE_VARS['captcha'] ? nc_captcha_formfield()."<br/><br/>".NETCAT_MODERATION_CAPTCHA.":<br /><input type='text' name='nc_captcha_code' size='10'><br />" : "")."


Stark
28.03.2013, 11:24
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
Похоже, что это ".nc_captcha_formfield()." не стандартная

Да капча-то стандартная, штатная, неткетовская, а не внешняя. Вызов только неверный был.

Цитата:
Должно же быть так:
Код:
".(!$AUTH_USER_ID && $current_cc['UseCaptcha'] && $MODULE_VARS['captcha'] ? nc_captcha_formfield()."<br/><br/>".NETCAT_MODERATION_CAPTCHA.":<br /><input type='text' name='nc_captcha_code' size='10'><br />" : "")."

Вот про эти условия я и писал выше.

Temet nosce...
01.04.2013, 07:43
Денис

Зарегистрирован:
2013-03-26
Сообщений: 2

Цитата:
Цитата:
Похоже, что это ".nc_captcha_formfield()." не стандартная

Да капча-то стандартная, штатная, неткетовская, а не внешняя. Вызов только неверный был.

Цитата:
Должно же быть так:
Код:
".(!$AUTH_USER_ID && $current_cc['UseCaptcha'] && $MODULE_VARS['captcha'] ? nc_captcha_formfield()."<br/><br/>".NETCAT_MODERATION_CAPTCHA.":<br /><input type='text' name='nc_captcha_code' size='10'><br />" : "")."

Вот про эти условия я и писал выше.

Капча стандартная , то что Вы все пишите типа не стандартный вызов это лишь влияет на отображение самой капчи в форме авторизован пользователь или нет, я так пробовал и ошибка от этого не исчезает. Вообщем проблема разрешилась, когда в обработку условия добавил следующую строку, Т.Е. ОБЪЯВИЛ ПЕРЕМЕННУЮ $current_cc['UseCaptcha']. НО ВСЕ РАВНО СПАСИБО ЧТО ОТКЛИКНУЛИСЬ НА РЕШЕНИЕ ПРОБЛЕМА, ТЕПЕРЬ СЛЕДУЮЩИЕ ФОКУСЫ, ПИСЬМА ОТПРАВЛЯЕТ НЕ НА ВСЕ ПОЧТОВЫЕ АДРЕСА К ПРИМЕРУ НА MAIL.RU БЕЗ ПРОБЛЕМ А ВОТ ТИПА GMAIL.COM ИЛИ YANDEX.RU НИ КАК ТАК ЧТО ТАНЦЫ С НЕТКАТОМ ПРОДОЛЖАЮТСЯ.

Условия добавления объекта
------------------------------
if(!nc_captcha_verify_code($nc_captcha_code, $nc_captcha_hash) ) {
$posting = 0;
$warnText = "Неправильный код! $current_cc['UseCaptcha']";
}
---------------------------------------------------------
01.04.2013, 17:15
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Цитата:
[QUOTE][QUOTE]обработку условия добавил следующую строку

Вообще ничего не добавляю с капчей, работает то, что есть по умолчанию)))

По поводу адресов: куда и что пишите?

Stark
198 196 2013-04-01 17:15:19 12973
Описание проекта