@ mario: вы были правы: D это всего лишь префикс $, который мне нужно было передать как скрытое поле ввода:)
Это очень плохая идея - в вашем теге формы,если, скажем, у вас есть скрытое поле captcha_answer
, и вы передаете значение этого значения $captchaInstance->check()
, то вы побеждаете цель капчи.Капчи предназначены для сортировки роботов от людей, но так просто прочитать значение, загрузив исходный код в боте, решающем капчу, и просто вытащив value="{answer}"
из источника.
Вместо этого вы должны использовать это:
<?php
session_start();
$_SESSION['answer'] = $prefix;
?>
Затем в своей программе проверки вы делаете это:
<?php
session_start();
$prefix = $_SESSION['answer'];
$passed = $captcha->check($prefix);
?>
На самом деле, я думаю, что этот класс был бы лучше, если бы он имел только статические методы, но это мое мнение.В любом случае, этот способ означает, что все данные хранятся только на стороне сервера, поэтому они не могут просто просмотреть исходный код для ответа с картинки.