Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как прикрутить капчу (проект KCAPTCHA) к форме
Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012
Помог: 6 раз(а)
Думал, чего уж проще - всё сделали за меня, осталось только в корневик положить. Не тут-то было. Скрипт капчи качал с этого сайта: http://www[dot]captcha[dot]ru/kcaptcha/
Возился, но допетрить все равно не смог. В архиве есть файл index.php, название которого я, естественно, меняю, потому что у меня в index.php лежит собственно форма. В начало своего файла добавляю
Ну и в обработчике, естественно, пара строк. Но до обработки дело не доходит, потому что вместо моей страницы с формой открывается только капча в левом верхнем углу браузера - т.е. открывается index.php из скачанного архива. Если убираю
Всё что между PHP тэгами нужно. 1) Открывает сессию, никакого вывода не должно быть до этого.
2) Грубо говоря ссылка на картинку.
3) Проверка капчи на правильность.
З.Ы. Вместо тегов формы вставьте свою ХТМЛ страницу с капчей там, где надо, и всё должно заработать.
Hawkmoth
Отправлено: 27 Января, 2012 - 12:51:22
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012
Помог: 6 раз(а)
Да, спасибо, это я понимаю.
В принципе, загвоздка только вот в чем: если я переименовываю лежащий в архиве файл index.php, капча перестает работать.
Если я переименовываю свой файл, оставляя скачанный index.php нетронутым, всё хорошо. Т.е., где-то в файлах капчи теряется связь. Но я не могу понять, где
Хочется, чтобы мой index.php так и назывался, а index.php из архива переименовать в captcha.php, например.
Думаю, проще будет кому-то скачать по ссылке этот архив и глянуть, если не в падлу Наверняка все проще простого, просто я пока даже в простых вещах теряюсь
snikers987
Отправлено: 27 Января, 2012 - 13:27:21
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
Hawkmoth
Отправлено: 27 Января, 2012 - 13:30:42
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012
Помог: 6 раз(а)
Всё, разобрался. На всякий случай напишу, если кто-то такой же недалёкий, как я, попадется.
Файл index.php из архива можно смело переименовывать, например, в captcha.php, а в файл, генерирующий форму (в моем случае - index.php), нужно добавить строчку
Всем спасибо за помощь. (Добавление) snikers987, спасибо отдельное! Я разобрался чуть пораньше, чем увидел твой ответ, но зато проверил себя (Добавление)
Теперь проблема с обработчиком.
В submit.php у меня лежит такой код:
который выдаёт "Wrong" на любой введенный ответ.
В примере, где форма и обработчик находятся в одном файле, все в порядке.
Я так понимаю, что проблема в переменной $_SESSION, значение которой теряется при переходе от формы к обработчику.
Или я неправ?
Zuldek
Отправлено: 27 Января, 2012 - 14:38:08
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
session_start() пропишите в первой строке кода обработчика. Если прописано, приведите его полный код.
Hawkmoth
Отправлено: 27 Января, 2012 - 15:00:18
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012
Помог: 6 раз(а)
Zuldek пишет:
session_start() пропишите в первой строке кода обработчик
Ну, и дальше там всякие действия в случае успешного исхода.
А может, кто-нибудь подскажет, как в случае неправильного набора капчи обновить картинку, не обновляя при этом всю страницу? Ну, чтобы пользовательские данные из других полей формы не терялись
Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012
Помог: 6 раз(а)
Только через JS можно? Стандартными средствами php, я так понимаю, этого не сделать. Но как бы так с наименьшей кровью сделать такое обновление (капчи без перезагрузки)? Натолкните на мысль плиз. Учитывая, что я хочу использовать именно вышеописанную капчу.
Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012
Помог: 6 раз(а)
Идём дальше. Следующий вопрос.
Как при неправильном вводе капчи автоматически ее обновить, не перезагружая при этом всю страницу? Т.е., чтобы файл-обработчик, вернув "false" при проверке на правильность капчи, автоматически загружал новую картинку?
Файл генерации формы и файл-обработчик, напомню, разные файлы.
В общем вопрос сводится к следующему - можно ли из файла 1.php вызвать js-функцию function(), которая определена в файле 2.php, чтобы она произвела некоторые действия в 2.php? В нашем случае - обновила картинку.
Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2013
Помог: 0 раз(а)
[+]
Ребят всем СПАСИБО! Вы молодцы!!!! (Добавление)
<?PHP
header("Content-Type: text/html; charset=utf-8");
if(!isset($_SESSION['captcha_keystring'])|| $_SESSION['captcha_keystring'] !== $_POST['keystring']){
die (msg(0,"Неправильно введен текст с картинки"));
unset($_SESSION['captcha_keystring']);}
?>
Почему ругается?
Fatal error: Call to undefined function msg() in /home/u126578750/public_html/reg ister.tpl on line 53
53 линия это die (msg(0,"Неправильно введен текст с картинки"));
DeepVarvar
Отправлено: 15 Марта, 2013 - 04:00:21
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
google translate => Call to undefined function msg
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.