| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Антиспам - как внедрить? |
| Автор: Moby 13.4.2009, 20:36 | ||
| Люди добрые, мне очень нужна ваша помощь, ваш совет. Я на пхп не работаю, в основном на С++. Но вот на работе мне дали задание и уже поздно отказываться, а срок поджимает. Возникает ошибка, когда я вставляю код примера Recaptcha на страничку КОНТАКТА(где есть форма для заполнения сообщения и отправки на сервер). Сама ошибка Notice: Undefined index: recaptcha_response_field in /home/web/www.iitp.ru/html/contacts.php on line 131 Ошибка указывает на эту строчку if ($_POST["recaptcha_response_field"]) {
И на всякий прикладываю код всей страницы КОНТАКТА. |
| Автор: SneG0K 13.4.2009, 20:53 |
| Вдумываться в код сейчас вообще не хочется, но вот как пользователь скажу, не бери рекапчу! она меня как пользователя бесит. |
| Автор: Moby 14.4.2009, 11:47 |
| А если не рекапчу, то что тогда посоветуете? |
| Автор: MoLeX 14.4.2009, 11:54 |
http://captcha.ru/ |
| Автор: Sanchezzz 14.4.2009, 11:59 |
| Можно вопрос ответ. Можно как на рапиде делали раньше сколько кошек нарисовано или введите только черные цифры или белые итд. ПС. На форуме можешь найти и мою капчю довольно маленькая если с этим великом не разберешься. |
| Автор: Moby 14.4.2009, 14:01 |
| Спасибо. Рассмотрю оба варианта. Sanchezzz, а можно ссылочку на Вашу капчу? Но в "профилактических" целях я все же хочу поставить эту Рекапчу. И тут возникает уже более конкретный вопрос и в связи с этим я переделаю мой первый пост и продублирую новый вопрос в этом посте. Используя код, который приводится в примере к Рекапче и впихнув его в в код ФОРМЫ на странице выводится вот такая ошибка Notice: Undefined index: recaptcha_response_field in /home/web/www.iitp.ru/html/contacts.php on line 131 Ошибка указывает на эту строчку if ($_POST["recaptcha_response_field"]) { С чем это может быть связано? Для проверки я просто создаю с этим же кодом из примера страничку и все рабоатет, а вот когда сую в код формы то ошибка. |
| Автор: Sanchezzz 14.4.2009, 14:15 | ||
| Боюсь его сча не найти в топиках... Делаешь форму поле куда вводить ну и картинка
Принемать данные все умеют код картинки хранится тут $_SESSION['image_kod'] и в скрипте antibot.php измени пути картинок на свои. Насчет ошибки переменная не объявлена... <? error_reporting(E_ALL && E_NOTICE); ?> в начало скрипта. |
| Автор: Shark 17.4.2009, 11:10 |
| а мне кажется что ошибка зарыта в это recaptchalib.php файле, покаи его код. |
| Автор: lelik133 17.4.2009, 11:55 |
| а форме то есть поле recaptcha_response_field? сделайте var_dump($_POST) и посмотрите |
| Автор: Shark 17.4.2009, 12:11 |
| lelik133, я смотрел и не нашел мне кажется что все таки ошибка в подключаемом файле.. |
| Автор: lelik133 17.4.2009, 12:29 |
| уровень erorr_reporting наверное разный у вас, поэтому и не видел |
| Автор: Moby 17.4.2009, 13:51 | ||||||
| Для проверки сделал var_dump($_POST); Выдает array(0) { }
Это что значит? Вообще с recapchalib точно все в порядке так как я просто создаю тестовую страничку с формой и все работает Вот эта тестовая страничка
А впихнуть это все в код формы страницы КОНТАКТА не поулчается, выдает выше описанную страницу. Может дело в методе post? Ведь этот метод вроде как посылает на сервер все эти данные (составленное сообщение, имя, фамилия...) а тут впихивая эту рекапчу я еще что то от поста хочу. Извините за столь глупые вопросы. Вот код страницы contacts.php, он не большой.
|
| Автор: lelik133 17.4.2009, 14:27 |
| array(0) { } значит то что у вас данные из формы не пришли |
| Автор: bars80080 17.4.2009, 16:35 |
а происходит это вполне возможно потому, что форма разрывает таблицу. можно только <form><table> ... </table></form> или ...<td><form> ... </form></td> .... |
| Автор: Shark 17.4.2009, 16:35 |
| lelik133, да, верно... я забыл включить error_reporting(E_ALL && E_NOTICE); Moby, а может ты не будешь заморачиваться? возьми сам напиши капчу и все... либо с картинкой, либо сколько будет 2*9 = и нажно ввести ответ.. |
| Автор: nerezus 18.4.2009, 03:44 | ||
Shark, +1. А заодно и свой интерпретатор, зачем уж с PHP заморачиваться, когда можно свой написать, благо C++ знаешь. А чтобы API не учить, можно свою ОС написать. Shark, |
| Автор: Moby 20.4.2009, 11:11 | ||||||
| Сперва хочу сказать всем огромное спасибо за то, что вы отвечаете на столько глупые вопросы, во многих других местах послали бы учить мат часть. 2*9 = в меру своего незнания мне кажется, что так роботы легко пройдут эту защиту. Да и мне сказали сделать так то так то, так что выбора нет. Что касаемо
сделал, теперь по нажатию кнопки 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) ? Вот код рекапчи и метода, что проверяет на введение имени и фамилии.
|
| Автор: Photon 21.4.2009, 04:50 | ||
Вот как-то так, но это только в общих чертах. Думаю, дальше сам разберешься..
|
| Автор: Shark 21.4.2009, 07:16 |
| Moby, а у тебя есть сравнение того, правильно ли пользователь ввел данные из капчи или нет? |
| Автор: Moby 23.4.2009, 09:33 | ||
Эмм... ну я проверял и если не правильно, то на капчи самой пишется, что не правильно. Ты это имел ввиду? Photon, спасибо, буду пробовать. P.S. Пока не проверял, но код посмотрел, "звучит" работоспособно и решает все проблемы. Ох как хочется что бы заработало. |
| Автор: Moby 23.4.2009, 11:07 | ||
Photon, а зачем прятать кнопку? То есть как же тогда капча будет получать вписанное слово?
|
| Автор: Shark 23.4.2009, 12:08 |
| ввел пользователь: UbFA9 капча показывала: UbFA9 при нажатии кнопки.... ты делал вывод этих параметров чтоб посмотреть? а то может получиться что до отправки все равильно а потом получает UbFA9 (Пользователя), а капча помнялась на TtVlK и естественно будет ошибка... или я уже сильно отстал от темы |
| Автор: Moby 23.4.2009, 12:53 |
| Нет, не делал вывод этих параметров. Но вроде бы все правильно. Хотя... Я до сих пор не могу сделать перехват неправильно введенного лова. Совет Photon'а хороший, но возникает ряд маленьких проблем. а для меня маленькая проблема это большая. Кстати было бы интересно вывести то слово, которое пользователь ввел, но вот как это сделать? |