Вставить капчу в шаблон Smapty

sevalery

Новичок
Здравствуйте!
Пробую (только учусь) вставить капчу в шаблон 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>&nbsp<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];
Сообщение об ошибке 'Введенные символы не соответствуют проверочному слову' – не выводятся.
При условии правильного заполнения остальных полей формы, при нажатии "Проверить" выполняется "Добавить объявление".
Не могу понять, где ошибка?
 

sevalery

Новичок
Добил! Заработало! Решил проблему сам.
А тему можно закрывать.
 
Сверху