Страница с регистрационной формой содержит необходимые для заполнения поля.
После их заполнения пользователь нажимает кномку "Зарегистрироваться". При этом на сервер отправляется запрос (обычно POST) с содержимым всех полей.
Далее скрипт анализирует информацию и принимает решение о том, зарегистрировать пользователя или отказать.
Защита, которую мы предлагаем, является более надежной, чем имеющиеся в сети скрипты (как kcaptcha) или сервисы (как reCaptcha).
Изменяющийся шрифт, размер и цвет символов, а также изменяющийся неоднородній фон затрудняет работу программ для автоматического распознавания текста.
nCaptcha - это более совершенный тест. Для успешного прохождения теста необходимо не просто ввести символы с картинки, а выполнит определенное задание, например, расположить символы в алфавитном порядке. Таким способом, автоматическое распознавание правильного ответа с помощью сервисов типа Anti-captcha и автоматическая регистрация становится практически невозможной.
В форму регистрации Вашего сайта необходимо добавить строку
Простейший пример регистрационной формы с интегрированной защитой nCaptcha:
<?
$cap_secret="YOUR_SECRET_KEY";
session_start();
$yourdomain = preg_replace('/^www\./' , '' , $_SERVER['HTTP_HOST']);
$posted=$_POST["posted"];
if ($posted==1)
{ //the form is filled in
$key=$_SESSION["key"];
$captcha=$_POST["answer"];
$challenge=$_POST["challenge"];
if (!$captcha)
{
echo "CAPTCHA WAS NOT ENTERED";
} else
{
if ($challenge==md5($key.$captcha.$yourdomain.$cap_secret))
{
echo "CAPTCHA answer is valid, you passed the test.";
} else
{
echo "CAPTCHA answer is incorrect.";
}
$key=md5(time().rand(100,1000));
//you MUST change this field here to prevent flood.
$_SESSION["key"]=$key;
}
} else
{
//generate the key and store it on the server
$key=md5(rand(100,1000).time());
session_register("key");
$_SESSION["key"]=$key;
echo '<form action="form.php" method="post"><input type=hidden name=posted value=1>
<table border=0 align=center>
<tr>
<td>Login <font color="red"> * </font>
</td>
<td align=right><input type="text" name=login size=40>
</td>
</tr>
<tr>
<td>Password <font color="red"> * </font>
</td>
<td align=right><input type=password name=password size=40>
</td>
</tr>
<tr>
<td>Turing-like test<br>nCaptcha</td>
<td>
<script language="javascript" type="text/javascript" src="http://captcha.admintools.org.ua/js.php?key='.$key.'"></script>
</td>
</tr>
<tr>
<td colspan=2 align=center>
<input type="button" value="CANCEL" onClick="history.go(-1);">
<input type="submit" value="REGISTER">
</td>
</tr>
</table>
</form>';
}
?>
Пример nCaptcha Вы можете увидеть в форме регистрации на данном сайте.