Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Антиспам - как внедрить? recaptcha... 
:(
    Опции темы
nerezus
Дата 18.4.2009, 03:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Moby, а может ты не будешь заморачиваться? возьми сам напиши капчу и все... либо с картинкой, либо сколько будет 2*9 = и нажно ввести ответ..
 

Shark, +1. А заодно и свой интерпретатор, зачем уж с PHP заморачиваться, когда можно свой написать, благо C++ знаешь.
А чтобы API не учить, можно свою ОС написать.


Shark,  smile 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Moby
Дата 20.4.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Сперва хочу сказать всем огромное спасибо за то, что вы отвечаете на столько глупые вопросы, во многих других местах послали бы учить мат часть.

2*9 = в меру своего незнания мне кажется, что так роботы легко пройдут эту защиту. Да и мне сказали сделать так то так то, так что выбора нет. smile

Что касаемо
Цитата

можно только <form><table> ... </table></form> или ...<td><form> ... </form></td> ....


сделал, теперь по нажатию кнопки submit у формы, капча работает, НО если введено не правильно или вообще ничего не введено то сообщение все равно отправляется. 

А ошибка
Notice: Undefined index: recaptcha_response_field in /home/web/www.iitp.ru/html/contacts.php on line 130
осталась, но она пропадает, как только один раз нажмешь на кнопку формы. То есть в if ($_POST["recaptcha_response_field"]) 
не определенно recaptcha_response_field.

Ну как всегда вопрос. Точнее два.

1) Как избавиться от этой ошибки, просто в тупую определяя переменную $recaptcha_response_field не помогает?

2) Как отловить по нажатию кнопки submit ошибку капчи?
У формы есть метод для проверки введены ли имя, фамилия.
<form method="post" action="" onsubmit="return checkForm(this)">
Как я могу используя этот метод проверить вот такое условие  if ($resp->is_valid) ?

Вот код рекапчи и метода, что проверяет на введение имени и фамилии.
Код

function checkForm(form) {
    var error='';
   if(!form.name.value) error+="<?=t('Íå óêàçàíî')?> - '<?=t('Èìÿ')?>'\r\n";
    if(!form.fam.value) error+="<?=t('Íå óêàçàíî')?> - '<?=t('Ôàìèëèÿ')?>'\r\n";
    if((!form.mail.value)&&(!form.phone.value)&&(!form.fax.value)) error+="<?=t('Íå óêàçàíû Âàøè êîîðäèíàòû')?>\r\n";
    if(form.mess.innerText=='') error+="<?=t('Íå óêàçàíî')?> - '<?=t('Ñîîáùåíèå')?>'\r\n";
    if(error) { alert(error); return false; } else return true;


}

Код

    <?php
    require_once('recaptchalib.php');

    $publickey = "6Lcd3AUAAAAAADUe_joLmB_2xQo3ep869F4zB6a_"; 
    $privatekey = "6Lcd3AUAAAAAANPd8WgyL0CpywAXTIHA8LIS5DDQ";

    # the response from reCAPTCHA
    $resp = null;
    # the error code from reCAPTCHA, if any
    $error = null;
    
    
    if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
                echo "You got it!";
        } else {
                # set the error code so that we can display it
                $error = $resp->error;
        }
}
echo recaptcha_get_html($publickey, $error);
//    var_dump($_POST);

    ?>



Это сообщение отредактировал(а) Moby - 20.4.2009, 11:12
PM MAIL ICQ   Вверх
Photon
Дата 21.4.2009, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Вот как-то так, но это только в общих чертах. Думаю, дальше сам разберешься..

Код

<?
    require_once('recaptchalib.php');

    $publickey = "6Lcd3AUAAAAAADUe_joLmB_2xQo3ep869F4zB6a_"; 
    $privatekey = "6Lcd3AUAAAAAANPd8WgyL0CpywAXTIHA8LIS5DDQ";

    # the response from reCAPTCHA
    $resp = null;
    # the error code from reCAPTCHA, if any
    $error = null;
    
    
    if (array_key_exists('recaptcha_response_field',$_POST)) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
           //послать сообщение или сделать что-то полезное
        }
        else {
            //показать заново форму отправки без submit и </form>
            echo recaptcha_get_html($publickey, $error);
            echo "<input type='submit' value='Отправить' />";
            echo "</table></form>";
        }
   }
   else {
            //показать форму отправки без submit и </form>
            echo recaptcha_get_html($publickey, $error);
            echo "<input type='submit' value='Отправить' />";
            echo "</table></form>";
   }
?>


Это сообщение отредактировал(а) Photon - 21.4.2009, 04:57


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Shark
Дата 21.4.2009, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Moby, а у тебя есть сравнение того, правильно ли пользователь ввел данные из капчи или нет?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Moby
Дата 23.4.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Цитата(Shark @ 21.4.2009,  07:16)
Moby, а у тебя есть сравнение того, правильно ли пользователь ввел данные из капчи или нет?


Эмм... ну я проверял и если не правильно, то на капчи самой пишется, что не правильно. Ты это имел ввиду? smile

Photon, спасибо, буду пробовать.

P.S. Пока не проверял, но код посмотрел, "звучит" работоспособно и решает все проблемы. Ох как хочется что бы заработало. smile 

Это сообщение отредактировал(а) Moby - 23.4.2009, 09:38
PM MAIL ICQ   Вверх
Moby
Дата 23.4.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Photon, а зачем прятать кнопку? То есть как же тогда капча будет получать вписанное слово?

Код

 else {
            //показать форму отправки без submit и </form>
            echo recaptcha_get_html($publickey, $error);
            echo "<input type='submit' value='Отправить' />";
            echo "</table></form>";
   }


Это сообщение отредактировал(а) Moby - 23.4.2009, 11:09
PM MAIL ICQ   Вверх
Shark
Дата 23.4.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



ввел пользователь: UbFA9
капча показывала: UbFA9

при нажатии кнопки.... ты делал вывод этих параметров чтоб посмотреть?
а то может получиться что до отправки все равильно а потом получает UbFA9 (Пользователя), а капча помнялась на TtVlK и естественно будет ошибка...
или я уже сильно отстал от темы


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Moby
Дата 23.4.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Нет, не делал вывод этих параметров. Но вроде бы все правильно. Хотя...

Я до сих пор не могу сделать перехват неправильно введенного лова. Совет Photon'а хороший, но возникает ряд маленьких проблем. а для меня маленькая проблема это большая. 

Кстати было бы интересно вывести то слово, которое пользователь ввел, но вот как это сделать? smile
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.