@FVest

Класс каптча, почему не работает?

Всем привет. Я нашёл в интернете интересную капчу и решил попробовать сделать что-то подобное на своём сайте, но только в классе (я новичок, поэтому не судите строго).
Вот что у меня получилось, но я не понимаю, как передать различные данные из бд в класс. Кроме того, при формировании каптчи выпавшее число не совпадает с нужным, иногда не выпадает вовсе и порой повторяется, хотя не должно (скрин ниже). Буду очень благодарен за помощь и советы.
class captcha
{

    private $pdo;

    function __construct($pdo)
    {
        $this->pdo = $pdo;
    }

    function getRecord()
    {
        $result = $this->pdo->query("SELECT `id` FROM tbl_term ORDER BY RAND() LIMIT 1");
        return $result->fetch(PDO::FETCH_COLUMN);
    }

    function getCaptchaIcons()
    {
        $captcha = $this->pdo->prepare("SELECT tbl_captcha_images.*, tbl_term.name FROM tbl_captcha_images 
        JOIN tbl_term ON tbl_captcha_images.term_id = tbl_term.id WHERE term_id != ? ORDER BY RAND() LIMIT 4");
		$captcha->execute([$this->getRecord()]);
		$captchaResult = $captcha->fetchAll();
        return $captchaResult;
    }

    function getRandomCaptchaId()
    {
		$captcha = $this->pdo->prepare("SELECT tbl_captcha_images.*, tbl_term.name FROM tbl_captcha_images 
        JOIN tbl_term ON tbl_captcha_images.term_id = tbl_term.id WHERE term_id = ? LIMIT 1");
		$captcha->execute([$this->getRecord()]);
		$captchaResult = $captcha->fetchAll();
        return $captchaResult;
    }
	
	function captchaForm(){
		
		$captchaOutput = array_merge($this->getCaptchaIcons(), $this->getRandomCaptchaId());
		shuffle($captchaOutput);
		
		echo ('<div class="row">
				<div class="captcha-container">
					<p> Select the <span class="text-color">'.$this->getRecord().'</span><span id="captcha-info" class="validation-message"></span></p>
					<input type="hidden" name="captcha_code" value="">
        ');
		foreach ($captchaOutput as $value) {
		echo ('
		<div class="svg-padding">'.$value['name'].'
			<div class="svg">'.$value['captcha_icon'].'<input type="hidden" class="icons" value="'.$value['id'].'"></div>
		</div>');
		}
		echo ('		</div>
			</div>');
	}
}


И сам скриншот
66cded658acb7649324524.png
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы