Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Регулярки и капча яндекса


Автор: wayshik 10.11.2010, 14:31
Всем привет, есть код отправления капчи яндекса в сервис антикапчи

Код

 public function checkforrobot($content,$post,$REFFER)
 {
if(stripos($content,"Запросы с вашего адреса похожи на автоматические, пожалуйста введите цифры, которые вы видите на картинке.")!==FALSE)
{
$anticapcha=new anticapcha();

preg_match_all("/<input type=\"hidden\" name=\"key\" value=\"(.*?)\"/i",$content,$KeyArray,PREG_PATTERN_ORDER);
preg_match_all("/<input type=\"hidden\" name=\"retpath\" value=\"(.*?)\"/i",$content,$retpathArray,PREG_PATTERN_ORDER);
preg_match_all("/<img src=\"http:\/\/captcha\.yandex\.net\/image\?key=(.*?)\">/i",$content,$ImageArray,PREG_PATTERN_ORDER);
$captchaContent=$this->dryconnect("http://captcha.yandex.net/image?key=".$ImageArray[1][0],"",0);
$content_type=$this->Lastinfo['content_type'];
     $extention="jpg";
    /* switch($content_type)
     {
     case 'image/jpeg':
     $extention="jpg";
     break;
     }   */
     $fp = fopen ("./code.$extention", "w+");
     fwrite ($fp, $captchaContent);
     fclose ($fp);
     $code=$anticapcha->recognize("./code.$extention", "871b63251f0537e9081a0101648e8a26", true);
     $postA="retpath=".$retpathArray[1][0]."&key=".$KeyArray[1][0]."&rep=$code";
      $validationURL="http://captcha.yandex.net/send.xml";
       print("<H1>POSTing to $validationURL</H1><hr><hr><br>");
     $aftercaptcha=$this->dryconnect($validationURL,$postA,0);//"http://captcha.yandex.net/send.xml"
     $validationURL="http://captcha.yandex.net/&retpath=".$retpathArray[1][0]."&key=".$KeyArray[1][0]."&rep=$code";
     $aftercaptcha=$this->dryconnect($validationURL,$postA,0);
    // $aftercaptcha=$this->dryconnect($retpathArray[1][0],"",0);
     $aftercaptcha=$this->dryconnect($retpathArray[1][0],$post,0);
   //  $aftercaptcha=$this->dryconnect($REFFER,"",0);
     return $aftercaptcha;
}

// print($aftercaptcha);
 return false;  

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


Автор: zloyGamer 13.11.2010, 10:05
что за класс то такой?
приведи весь код, а то хз че у тебя там творится в $this->dryconnect, $this->Lastinfo, anticapcha и к.
без них трудно понять где/что вообще происходит

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)