Здравствуйте! Пробую (только учусь) вставить капчу в шаблон Smapty. Не получается. Необходима помощь! Решил использовать готовое решение kcaptcha от (http://www.captcha.ru/kcaptcha/). Создал в корне папку kcaptcha, поместил в нее папку ‘fonts’ и файлы kcaptcha.php и kcaptcha_config.php. Создал файл captcha.php и поместил его в ту же папку. PHP: <?php include('kcaptcha.php'); session_start(); $captcha = new KCAPTCHA(); $_SESSION['captcha_keystring'] = $captcha->getKeyString(); ?> В файле add.tpl (templates/new/ board/ add.tpl )в форму ввода нового объявления добавил запись: PHP: <p>Введите текст, показаний ниже:</p> <p><img src="{$path_templates}kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" tabindex="9" name="keystring">{$error_captcha_keystring}</p> <p><input type="submit" tabindex="10" value="Проверить"></p> далее идет PHP: <INPUT id="submit" tabindex="11" type="submit" value="Добавить объявление (CTRL+ENTER)" name="submit"> <INPUT type="hidden" name="data_check" value="ok"> </FORM> Картинка появилась, изображения цифр при нажатии "Проверить" обновляется. Теперь необходимо проверку капчи (в этом виде проверено – работает) на соответствие кода: PHP: <?php if(count($_POST)>0){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){ echo "Правильно"; }else{ echo "Неправильно"; } } unset($_SESSION['captcha_keystring']); ?> Вставить в файл - message.php В файле message.php (в корне) PHP: <?php $open_error_tpl='<br> <font size="1" color=A14F4F>'; $close_error_tpl='</font>'; $MSG['1'] = $open_error_tpl.'Длина не может превышать 15 символов'.$close_error_tpl; добавил запись сообщение об ошибке PHP: $MSG['45'] = $open_error_tpl.'Введенные символы не соответствуют проверочному слову'.$close_error_tpl; в части проверки на соответствие условий при заполнении полей формы PHP: if (strlen($f_user_names) > 15) $err[1]=$MSG['1']; добавил PHP: if (isset($_SESSION['captcha_keystring']) && !empty($_SESSION['captcha_keystring']) && isset($_POST['captcha_string']) && $_SESSION['captcha_keystring'] != $_POST['captcha_string']) $err[45]=$MSG['45']; unset($_SESSION['captcha_keystring']); - убрал значение CAPTCHA из сессии в части PHP: $smarty->assign('error_user_category', $err[21]); добавил PHP: $smarty->assign('error_captcha_keystring', $err[45]); в части PHP: $smarty->assign("name_site",$name_site); добавил PHP: $smarty->assign('kaptcha','kcaptcha/index.php?' .str_replace(array(' ', '.'), '', microtime())); в части PHP: }else{ $error_flooder=$err[36]; добавил PHP: $error_captcha_keystring=$err[45]; Сообщение об ошибке 'Введенные символы не соответствуют проверочному слову' – не выводятся. При условии правильного заполнения остальных полей формы, при нажатии "Проверить" выполняется "Добавить объявление". Не могу понять, где ошибка?
Добил! Заработало! Решил проблему сам. ОШИБКИ! Хотя по количеству сообщений не могу понять это был сложный вопрос или очень простой. Или лень вникать? Также вставил капчу в форму обратной связи. Есть готовое решение для формы обратной связи PHPSendMail v2.1.2, с внедрением captcha. Всем спасибо! А тему можно закрывать.
сто одежек и все без застежек... какие только костыли люди ни изобретают, чтобы просто юзать пхп сообразно своему чувству прекрасного... ЗЫ: я у себя капчу отключил. За несколько лет даже "Привет" никто не написал - все строго по делу.
А вот у меня, до недавнего времени, тоже было все "по делу". А как-то "форму частного объявления без регистрации" начали бомбить роботы. (я проверил по IP запретил через .htaccess ) 20-30 заполнений в день с длинными фразами, которые выходили за границы форм (так как форма на div) нарушали внешний вид. Пришлось добавить несколько проверок: на макс. длину слов, макс.длину текста, запретить использование спец.символов, удаление перевода строк и добавить капчу. Также вставил капчу в форму обратной связи. Планирую добавить в форму заявки на цену объекта.