@CakeCPP

Ответ от сервера к скрипту не отправляется, как исправить?

У меня есть таблица с 3 элементами: сервер, вопрос, ответ. Мне нужно в зависимости от сервера и вопроса вернуть ответ, LFDLtvF.png
Не могли бы вы подсказать, что я делаю не так?
function hook.onShowDialog(dialogID, style, title, button1, button2, text)
    if title:find("Капча") then 
        captchaServer = sampGetCurrentServerName()
        captchaServer = captchaServer:match("Diamond Role Play | (.+)")
        if captchaServer ~= nil then
            if captchaServer:find("Emerald") then 
                captchaServer = "Emerald"
            elseif captchaServer:find("Amber") then captchaServer = "Amber" 
            elseif captchaServer:find("Trilliant") then captchaServer = "Trilliant" 
            elseif captchaServer:find("Sapphire") then captchaServer = "Sapphire" 
            elseif captchaServer:find("Crystal") then captchaServer = "Crystal" 
            elseif captchaServer:find("Ruby") then captchaServer = "Ruby" 
            end 
        end
        captchaQuestion = text:match("Вопрос:\n(.+)\n\nВарианты ответа:")
        captchaAnswer[1] = text:match("1. (.+)\n2.")
        captchaAnswer[2] = text:match("2. (.+)\n3.")
        captchaAnswer[3] = text:match("3. (.+)\n4.")
        captchaAnswer[4] = text:match("4. (.+)\n\n{FFFFFF}Введите")
        sampAddChatMessage("{00A885}анти-капча{ffffff}: делаем запрос к базе данных", -1) 
        local serverEncoded = urlencode(captchaServer)
        local questionEncoded = urlencode(captchaQuestion)
        httpRequest('http://localhost/index.php?cap_server_2='..serverEncoded..'&cap_question_2='..questionEncoded, nil, function(response, code, headers, status)
            if response then 
                sampAddChatMessage("{00A885}анти-капча{ffffff}: ищем капчу в базе данных...", -1)
                 local trueAnswer = decodeJson(response.text)["cap_answer_to_lua"]
                 sampAddChatMessage('true answer: '..trueAnswer, -1)
            else 
                sampAddChatMessage("{00A885}анти-капча{ffffff}: капча в базе данных не найдена", -1)
            end
        end)
        isCaptchaActive = true
    end
end

$cap_server_2 = $_GET["cap_server_2"];
$cap_question_2 = $_GET["cap_question_2"];
$cap_answer_to_lua;

$sql = "SELECT server, question, answer FROM drp_captch WHERE server = '$cap_server_2' AND question = '$cap_question_2'";
$result = $conn->query($sql);
echo $sql;

if ($cap_question_2 && $cap_server_2) {

    if ($result->num_rows > 0) 
    {
        $IsCaptchInTable = true;
        $row = mysqli_fetch_array($result);
        $cap_answer_to_lua = $row["answer"];
        echo json_encode( $cap_answer_to_lua );
        $result->free();
    }
    else { 
        $IsCaptchInTable = false;
    }
}
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@SergeyRogulin
Инструкция на стороне PHP вида:

$result = $conn->query($sql);
echo $sql; // Именно эта, но не строкой выше!


... сначала выведет SQL-запрос, а затем, в случае успеха, уже будут выведены сами данные в JSON-формате. Этот самый SQL-запрос ломает Вам разбор в LUA-скрипте:

local trueAnswer = decodeJson(response.text)["cap_answer_to_lua"]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar Куратор тега Lua
Делай добро и бросай его в воду.
Не могли бы вы подсказать, что я делаю не так?

Не так вы делаете отладку вашего скрипта. Если бы вы делали так, как надо, то быстро бы нашли ошибку.

Научитесь отлаживать свои программы, иначе вы не имеете права называться программистом. А когда столкнетесь с реальным парадоксом, то сведите его к 2-3 строчкам кода, который любой желающий сможет легко воспроизвести у себя, - и можно будет задать вопрос на Тостере.

Кроме того, вы не так даже задали этот вопрос. Потому что не описали результат. Ведь слова "не работает" или "не отправляется" ни о чем не говорят человеку, который готов вам ответить. Текст ошибки где?? Вам нужно хотя бы немножко думать о тех, кому вы пишете, ставить себя на их место. А на текущий вопрос даже начать отвечать не получится, а про ответ-решение вообще молчу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽