CURL - В то время как петля, пока капча не будет успешной? - PullRequest
0 голосов
/ 30 июня 2011

Предполагается, что ключ капчи недействителен, необходимо снова загрузить новое изображение капчи и заново подтвердить ключ капчи.Как это можно сделать?

У меня есть короткий пример, это способ сделать?

while (1) {
    $postData = http_build_query($data);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "\**********************.crt");
    curl_setopt($ch, CURLOPT_URL, "https://domain.com/test" . $form_link);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiesPath . "/cookiefile.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiesPath . "/cookiefile.txt");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $page = curl_exec($ch);

    //Just a quick example
    if ($page == "Sucess") {
       break;
    } else {
        $ch = curl_init();
        //Some curl code here to Re-download Captcha Image (new image)
        $data['captchaText'] = CaptchaToText::Scan("images/captcha.jpg");
    }
}

1 Ответ

1 голос
/ 30 июня 2011

Да, вы все делаете правильно.Но только в первой части)

У вас уже инициирован ресурс cURL ($ ch).

Так что вам нужно только выполнить запрос cURL снова с помощью curl_exec ($ ch), и вы получитеновая страница.Все параметры cURL, установленные curl_setopt (), сохраняются в ресурсе.

Вот код:

if ($page == "Sucess") {
   break;
} else {
    $page = curl_exec($ch);
    //Some curl code here to Re-download Captcha Image (new image)
    $data['captchaText'] = CaptchaToText::Scan("images/captcha.jpg");
}
...