#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 ''; echo '
Комментариев нет:
Отправить комментарий