@KapcJIoH
gamer

Написал капчу, но выдает неверный ответ, почему так?

Капча выгялидит так:
function captcha_show() {

    $question = array(
        1 => 'Столица России?',
        2 => 'Столица Украины?',
        3 => 'Столица США?'
    );

    $num = mt_rand(1, count($question));
    $_SESSION['captcha'] = $num;

    echo $question[$num];
}

function captcha_valid() {
    $answers = array(
        1 => 'москва',
        2 => 'киев',
        3 => 'вашингтон'
    );

    if ($_SESSION['captcha'] != array_search( strtolower($_POST['captcha']), $answers)) {
        message('Ответ неверный, верный ответ - ' . $_SESSION['captcha']);
    };
};


Когда я даю на нее ответ, то он пишет что ответ неверен, вообще за ответ он считает почему-то цифру, в которой находится ответ, и даже если я напишу эту самую цифру, он все равно скажет что-то типа этого: "ответ 2 неверен, правильный ответ - 2".
  • Вопрос задан
  • 301 просмотр
Пригласить эксперта
Ответы на вопрос 2
@McBernar
Ну, наверное, потому что вы сравниваете число 1/2/3 и ответную строку москва/киев/вашингтон.
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
<?php
session_start();

function captcha_show()
{
    $question = array(
        1 => 'Столица России?',
        2 => 'Столица Украины?',
        3 => 'Столица США?'
    );

    $num = mt_rand(1, count($question));
    $_SESSION['captcha'] = $num;

    echo $question[$num];
}

function captcha_valid()
{
    $answers = array(
        1 => 'москва',
        2 => 'киев',
        3 => 'вашингтон'
    );

    if ($_SESSION['captcha'] != array_search(strtolower($_GET['captcha']), $answers)) {
        echo 'Ответ не верный, верный ответ - ' . $_SESSION['captcha'];
    } else {
        echo "ok";
    }
};

if (empty($_GET['captcha'])) {
    captcha_show();
} else {
    captcha_valid();
}


всё работает, проблема в тебе и в вызове каптчи скорее всего. Как и ответили в прошлом вопросе.
Ответ написан
Ваш ответ на вопрос

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

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