Curl->url = 'google.com'; * $this->Curl->post = true; // Set options like this, for a list of new names, see the array below organised by type * $this->Curl->postFieldsArray = array('field1' => 'value1', 'field2' => 'value2'); // This urlencode post data for you * $this->Curl->followLocation = true; // Make sure you use a boolean here, my class will do type checking * $this->Curl->userAgent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)'; * $this->Curl->execute(); // execute() returns the output instead of writing it straight to the page like normal cURL * $this->Curl->grab('

', '

'); // Matches the first set of these, and returns whats in between * **/ if(!function_exists('curl_init')) { die(' cURL is not installed.
Linux (Ubuntu) Users:
sudo apt-get install php5-curl
(or use your favourite package manager) then restart Apache:
sudo /etc/init.d/apache2 restart
Win32 Users: In order to enable this module on a Windows environment, libeay32.dll and ssleay32.dll must be present in your PATH.
' ); } class Curl extends AppModel { var $name = 'Curl'; var $handle; // Curl handle var $output = null; // Output from curl_exec var $return = null; // Return value for curl_exec var $options = array ( 'bool' => array ( 'autoReferer' => CURLOPT_AUTOREFERER, 'binaryTransfer' => CURLOPT_BINARYTRANSFER, 'cookieSession' => CURLOPT_COOKIESESSION, 'crlf' => CURLOPT_CRLF, 'dnsUseGlobalCache' => CURLOPT_DNS_USE_GLOBAL_CACHE, 'failOnError' => CURLOPT_FAILONERROR, 'fileModifiedTime' => CURLOPT_FILETIME, 'followLocation' => CURLOPT_FOLLOWLOCATION, 'forbidReuse' => CURLOPT_FORBID_REUSE, 'freshConnect' => CURLOPT_FRESH_CONNECT, 'ftpUseEprt' => CURLOPT_FTP_USE_EPRT, 'ftpUseEpsv' => CURLOPT_FTP_USE_EPSV, 'ftpAppend' => CURLOPT_FTPAPPEND, 'ftpAscii' => CURLOPT_FTPASCII, 'ftpListOnly' => CURLOPT_FTPLISTONLY, 'header' => CURLOPT_HEADER, 'httpGet' => CURLOPT_HTTPGET, 'httpProxyTunnel' => CURLOPT_HTTPPROXYTUNNEL, 'mute' => CURLOPT_MUTE, 'netRc' => CURLOPT_NETRC, 'nobody' => CURLOPT_NOBODY, 'noProgress' => CURLOPT_NOPROGRESS, 'noSignal' => CURLOPT_NOSIGNAL, 'post' => CURLOPT_POST, 'put' => CURLOPT_PUT, 'returnTransfer' => CURLOPT_RETURNTRANSFER, 'sslVerifyPeer' => CURLOPT_SSL_VERIFYPEER, 'transferText' => CURLOPT_TRANSFERTEXT, 'unrestrictedAuth' => CURLOPT_UNRESTRICTED_AUTH, 'upload' => CURLOPT_UPLOAD, 'verbose' => CURLOPT_VERBOSE, ), 'int' => array ( 'bufferSize' => CURLOPT_BUFFERSIZE, 'closePolicy' => CURLOPT_CLOSEPOLICY, 'connectTimeout' => CURLOPT_CONNECTTIMEOUT, 'dnsCacheTimeout' => CURLOPT_DNS_CACHE_TIMEOUT, 'ftpSslAuth' => CURLOPT_FTPSSLAUTH, 'httpVersion' => CURLOPT_HTTP_VERSION, 'httpAuth' => CURLOPT_HTTPAUTH, 'inFileSize' => CURLOPT_INFILESIZE, 'lowSpeedLimit' => CURLOPT_LOW_SPEED_LIMIT, 'lowSpeedTime' => CURLOPT_LOW_SPEED_TIME, 'maxConnects' => CURLOPT_MAXCONNECTS, 'maxRedirs' => CURLOPT_MAXREDIRS, 'port' => CURLOPT_PORT, 'proxyAuth' => CURLOPT_PROXYAUTH, 'proxyPort' => CURLOPT_PROXYPORT, 'proxyType' => CURLOPT_PROXYTYPE, 'resumeFrom' => CURLOPT_RESUME_FROM, 'sslVerifyHost' => CURLOPT_SSL_VERIFYHOST, 'sslVersion' => CURLOPT_SSLVERSION, 'timeCondition' => CURLOPT_TIMECONDITION, 'timeout' => CURLOPT_TIMEOUT, 'timeValue' => CURLOPT_TIMEVALUE, ), 'string' => array ( 'caInfo' => CURLOPT_CAINFO, 'caPath' => CURLOPT_CAPATH, 'cookie' => CURLOPT_COOKIE, 'cookieFile' => CURLOPT_COOKIEFILE, 'cookieJar' => CURLOPT_COOKIEJAR, 'customRequest' => CURLOPT_CUSTOMREQUEST, 'egbSocket' => CURLOPT_EGBSOCKET, 'encoding' => CURLOPT_ENCODING, 'ftpPort' => CURLOPT_FTPPORT, 'interface' => CURLOPT_INTERFACE, 'kerberosLevel' => CURLOPT_KRB4LEVEL, 'krb4Level' => CURLOPT_KRB4LEVEL, 'postFields' => CURLOPT_POSTFIELDS, 'proxy' => CURLOPT_PROXY, 'proxyUserPwd' => CURLOPT_PROXYUSERPWD, 'randomFile' => CURLOPT_RANDOM_FILE, 'range' => CURLOPT_RANGE, 'referer' => CURLOPT_REFERER, 'sslCipherList' => CURLOPT_SSL_CIPHER_LIST, 'sslCertificate' => CURLOPT_SSLCERT, 'sslCertificatePassword' => CURLOPT_SSLCERTPASSWD, 'sslCertificateType' => CURLOPT_SSLCERTTYPE, 'sslEngine' => CURLOPT_SSLENGINE, 'sslEngineDefault' => CURLOPT_SSLENGINE_DEFAULT, 'sslKey' => CURLOPT_SSLKEY, 'sslKeyPassword' => CURLOPT_SSLKEYPASSWD, 'sslKeyType' => CURLOPT_SSLKEYTYPE, 'url' => CURLOPT_URL, 'userAgent' => CURLOPT_USERAGENT, 'userPwd' => CURLOPT_USERPWD ), 'array' => array ( 'postFieldsArray' => 'postFieldsArray' ) ); function Curl() { $this->handle = curl_init(); } function getInfo($key) { $array = curl_getinfo($this->handle); return $array[$key]; } function url() { return $this->getInfo('url'); } function contentType() { return $this->getInfo('content_type'); } function httpCode() { return $this->getInfo('http_code'); } function headerSize() { return $this->getInfo('header_size'); } function requestSize() { return $this->getInfo('request_size'); } function fileTime() { return $this->getInfo('filetime'); } function sslVerifyResult() { return $this->getInfo('ssl_verify_result'); } function redirectCount() { return $this->getInfo('redirect_count'); } function totalTime() { return $this->getInfo('total_time'); } function nameLookupTime() { return $this->getInfo('namelookup_time'); } function connectTime() { return $this->getInfo('connect_time'); } function preTransferTime() { return $this->getInfo('pretransfer_time'); } function sizeUpload() { return $this->getInfo('size_upload'); } function sizeDownload() { return $this->getInfo('size_download'); } function speedDownload() { return $this->getInfo('speed_download'); } function speedUpload() { return $this->getInfo('speed_upload'); } function downloadContentLength() { return $this->getInfo('download_content_length'); } function uploadContentLength() { return $this->getInfo('upload_content_length'); } function startTransferTime() { return $this->getInfo('starttransfer_time'); } function redirectTime() { return $this->getInfo('redirect_time'); } function _parsePostFieldsArray($array) { $data = array(); foreach ($array as $key=>$val) { $data[] = urlencode($key) . '=' . urlencode($val); } return implode('&', $data); } function execute() { foreach($this->options as $type => $options) { foreach ($options as $key => $val) { if(isset($this->{$key})) { $type_check = 'is_' . $type; if($type_check($this->{$key})) { if($key == 'postFieldsArray') { curl_setopt($this->handle, CURLOPT_POSTFIELDS, $this->_parsePostFieldsArray($this->{$key})); } else { curl_setopt($this->handle, $val, $this->{$key}); } } else { trigger_error('Expected type \'' . $type . '\' for ' . $key, E_USER_ERROR); } } } } ob_start(); $this->return = curl_exec($this->handle); $this->output = ob_get_contents(); ob_end_clean(); return $this->output ; } function grab($start, $end) { $startPos = strpos($this->output, $start); $endPos = strpos(substr($this->output, $startPos), $end) + strlen($end); return substr($this->output, $startPos, $endPos); } function grabInside($start, $end) { $startPos = strpos($this->output, $start) + strlen($start); $endPos = strpos(substr($this->output, $startPos), $end); return substr($this->output, $startPos, $endPos); } } ?>