Work with the php CURL

Discussion in 'PHP' started by jamesdigitalpoint, May 19, 2007.

  1. #1
    removed removed removed removed removed:cool:
     
    Last edited: Mar 2, 2012
    jamesdigitalpoint, May 19, 2007 IP
  2. DeViAnThans3

    DeViAnThans3 Peon

    Messages:
    785
    Likes Received:
    83
    Best Answers:
    0
    Trophy Points:
    0
    #2
    There's a very good class for it which I regularly use. This class wasn't written by me, but its working very well ;)

    <?php
    /*
    Sean Huber CURL library
    
    This library is a basic implementation of CURL capabilities.
    It works in most modern versions of IE and FF.
    
    ==================================== USAGE ====================================
    It exports the CURL object globally, so set a callback with setCallback($func).
    (Use setCallback(array('class_name', 'func_name')) to set a callback as a func
    that lies within a different class)
    Then use one of the CURL request methods:
    
    get($url);
    post($url, $vars); vars is a urlencoded string in query string format.
    
    Your callback function will then be called with 1 argument, the response text.
    If a callback is not defined, your request will return the response text.
    */
    
    class CURL {
       var $callback = false;
    
    function setCallback($func_name) {
       $this->callback = $func_name;
    }
    
    function doRequest($method, $url, $vars) {
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       curl_setopt($ch, CURLOPT_HEADER, 1);
       curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
       curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
       if ($method == 'POST') {
           curl_setopt($ch, CURLOPT_POST, 1);
           curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
       }
       $data = curl_exec($ch);
       curl_close($ch);
       if ($data) {
           if ($this->callback)
           {
               $callback = $this->callback;
               $this->callback = false;
               return call_user_func($callback, $data);
           } else {
               return $data;
           }
       } else {
           return curl_error($ch);
       }
    }
    
    function get($url) {
       return $this->doRequest('GET', $url, 'NULL');
    }
    
    function post($url, $vars) {
       return $this->doRequest('POST', $url, $vars);
    }
    }
    ?>
    
    PHP:
    A code example:
    
    <?
    // Include the cURL class
    include("curl.class.php");
    // Initialize cURL library
    $curl = new CURL;
    
    // The vars
    $vars = "variable1=blabla&variable2=anothervalue";
    // POST it
    $result = $curl->post("http://www.someurl.com/submit/to/this/url.php", $vars);
    // or rather GET it?
    $result = $curl->get("http://www.anotherurl.com/get.php?" . $vars);
    ?>
    
    PHP:
    Hope this helps :)
     
    DeViAnThans3, May 20, 2007 IP