Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как правильно отвечать на запрос Captcha?

#php #vkontakte_api #вконтакте #captcha


Как правильно отвечать на запрос капчи?

error;

if(isset($_POST['enter_key']))
{
    $wall1 = file_get_contents("https://api.vk.com/method/users.get?captcha_sid=".$wall->captcha_sid."&captcha_key=".$key."&access_token=".$token);
    print_r($wall1);
}

?>
captcha_img."'>";?>
Я отправляю запрос users.get — в ответ получаю ошибку капчи. Потом отправляю запрос users.get + captcha_sid и captcha_key — в ответ приходит ошибка капчи и запрос опять ввести капчу. Вот пример: http://nicolaa.h1n.ru/1.php .


Ответы

Ответ 1



При отправке капчи вы запрашиваете новую капчу и зачем-то передаете её sid. То есть вы берете новый свежесгенерированный sid и передаете вместе с ним решение старой капчи (у которой другой sid). В принципе, я думаю, это единственная дырка в логике вашего скрипта. Но сама по себе ваша реализация ужасна: лишний запрос к API, неразборчивый код. Разумнее переписать его примерно так: $token, 'v' => '5.67' ]; // Если страницу открыли после отправки формы решения капчи, // то добавляем соответствующие параметры к запросу if (!empty($_POST['captcha_sid']) && !empty($_POST['captcha_key'])) { $parameters['captcha_sid'] = $_POST['captcha_sid']; $parameters['captcha_key'] = $_POST['captcha_key']; } $request = file_get_contents('https://api.vk.com/method/users.get?'.http_build_query($parameters)); $response = json_decode($request); // Если ВК вернул ошибку с капчей, то // показываем форму решения капчи if (isset($response->error->captcha_img)) { echo 'Captcha'; echo '
'; echo ''; echo ''; echo ''; echo '
'; }

Комментариев нет:

Отправить комментарий