Example #1
0
 /**
  * @param RequestParameters $params
  * @return string
  */
 public function submit(RequestParameters $params)
 {
     $errno = 0;
     $errstr = '';
     if ($this->socket->fsockopen('ssl://' . self::NOCAPTCHA_HOST, 443, $errno, $errstr, 30) !== false) {
         $content = $params->toQueryString();
         $request = "GET " . self::SITE_VERIFY_PATH . " HTTP/1.1\r\n";
         $request .= "Host: " . self::NOCAPTCHA_HOST . "\r\n";
         $request .= "Content-Type: application/x-www-form-urlencoded\r\n";
         $request .= "Content-length: " . strlen($content) . "\r\n";
         $request .= "Connection: close\r\n\r\n";
         $request .= $content . "\r\n\r\n";
         $this->socket->fwrite($request);
         $response = '';
         while (!$this->socket->feof()) {
             $response .= $this->socket->fgets(4096);
         }
         $this->socket->fclose();
         if (0 === strpos($response, 'HTTP/1.1 200 OK')) {
             $parts = preg_split("#\n\\s*\n#Uis", $response);
             return $parts[1];
         }
         return self::BAD_RESPONSE;
     }
     return self::BAD_REQUEST;
 }
Example #2
0
 /**
  * @param RequestParameters $params
  * @return mixed|string
  */
 public function submit(RequestParameters $params)
 {
     /**
      * PHP 5.6.0 changed the way you specify the peer name for SSL context options.
      * Using "CN_name" will still work, but it will raise deprecated errors.
      */
     $peer_key = version_compare(PHP_VERSION, '5.6.0', '<') ? 'CN_name' : 'peer_name';
     $options = array('http' => array('header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'GET', 'verify_peer' => true, $peer_key => 'api-nocaptcha.mail.ru'));
     $context = stream_context_create($options);
     return file_get_contents(self::SITE_VERIFY_URL . $params->toQueryString(), false, $context);
 }