Добавление CAPTCHA в формы Joomla

Для начала добавим CAPTCHA в формы регистрации и восстановления пароля.
Нам понадобиться скрипт kcaptcha (сгодятся и аналоги) и препарируемые файлы Joomla 1.0.X в составе: /components/com_registration/registration.html.php и /components/com_registration/registration.php.

Последовательность действий по шагам:
1. Открывает файл /components/com_registration/registration.html.php и добавляем код.
Для формы восстановления пароля:

<input type="text" name="confirmEmail" class="inputbox" size="40" />
	</td>
</tr>
<!-- PATCH BEGIN -->
<tr>
	<td>
		Enter text shown below:
	</td>
	<td>
		<input type="text" name="captcha" class="inputbox" size="20" />
	</td>
</tr>
<tr>
	<td></td>
	<td><?php session_start(); ?>
		<img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id(); ?>" />
	</td>
</tr>
<!-- PATCH END -->
<tr>
	<td colspan="2">
		<input type="submit" class="button" value="<?php echo _BUTTON_SEND_PASS; ?>" />

Для формы регистрации:

} else if (r.exec(form.password.value)) {
	alert( "<?php printf( addslashes( html_entity_decode(_VALID_AZ09) ),
			  addslashes( html_entity_decode(_REGISTER_PASS) ), 6 );?>" );
// PATCH BEGIN
} else if (form.captcha.value == "") {
	alert( "<?php echo 'Попробуйте ввести код еще раз'; ?>" );
// PATCH END
} else {
	form.submit();

и тут:

<input class="inputbox" type="password" name="password2" size="40" value="" />
	</td>
</tr>
<!-- PATCH BEGIN -->
<tr>
	<td>
		Enter text shown below: *
	</td>
	<td>
		<input type="text" name="captcha" class="inputbox" size="20" />
	</td>
</tr>
<tr>
	<td></td>
	<td><?php session_start(); ?>
		<img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id(); ?>" />
	</td>
</tr>
<!-- PATCH END -->
<tr>
	  <td colspan="2">

2. Мы добавили вывод картинки с капчей и формы для ее отправки в формы, теперь необходимо обеспечить правильность введенного кода в файле /components/com_registration/registration.php.
Для формы восстановления пароля:

$_live_site = $mosConfig_live_site;
$_sitename 	= $mosConfig_sitename;
 
// PATCH BEGIN
session_start();
$captcha=$_POST['captcha'];
if(!isset($_SESSION['captcha_keystring']) ||
   $_SESSION['captcha_keystring']!==$captcha)
{
	unset($_SESSION['captcha_keystring']);
	mosErrorAlert('You need to enter the code shown.');
}
session_unset();
session_write_close();
// PATCH END
 
$checkusername	= stripslashes( mosGetParam( $_POST, 'checkusername', '' ) );
$confirmEmail	= stripslashes( mosGetParam( $_POST, 'confirmEmail', '') );

Для формы регистрации:

// simple spoof check security
josSpoofCheck();
 
// PATCH BEGIN
session_start();
$captcha=$_POST['captcha'];
if(!isset($_SESSION['captcha_keystring']) ||
   $_SESSION['captcha_keystring']!==$captcha)
{
	unset($_SESSION['captcha_keystring']);
	mosErrorAlert('You need to enter the code shown.');
}
session_unset();
session_write_close();
// PATCH END
 
$row = new mosUser( $database );

1 Comment

  • On 12.20.09 Павел said:

    Спасибо. Попробую на форме контакты

Комментарии:

Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

*Required Fields