Kohana 3 Curl

class Model_Curl {

    public function query($url,$post='',$basicAuth=':',$userAgent='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.4',$headers=FALSE) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER,$headers);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_USERAGENT,$userAgent);
        curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
        curl_setopt($ch, CURLOPT_AUTOREFERER,1);
        curl_setopt($ch, CURLOPT_TIMEOUT,999);

        if($post) {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        }
        if(defined('COOKIES')) {
            curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIES);
            curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIES);
        }
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
        curl_setopt($ch, CURLOPT_USERPWD, $basicAuth);

        @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);


        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }

} // End Curl Model


Examples
define('COOKIES',$_SERVER['DOCUMENT_ROOT'].'/application/cache/c00kies.tmp');
$result = Model::factory('curl')->query('http://www.google.ru/');
$result = Model::factory('curl')->query('http://site.ru/','pass=qwertyasdfg&login=admin');


2 comments:

Richard Willis said...

couldn't you have used the Remote class to do this? http://kohanaframework.org/guide/api/Remote

anonymous said...

Hi Richard.
http://kohanaframework.org/guide/api/Remote
alternative to this method

Post a Comment