cURL / libcurl / PHP / Examples

PHP/CURL Examples Collection

We try to collect examples on how to program the PHP/CURL interface here. If you have any source snippests you want to share with the rest of the world, please let us know!

blogpost Post a blog entry to using their "Atom" XML-based API. Michael Phipps
callbacks Set callback functions to receive the HTTP response as it comes through. Keyvan Minoukadeh
cookiejar Login to on one page and then get another page passing all cookies from the first page along Mitchell
customrequest CURLOPT_CUSTOMREQUEST usage shown
ebay_login Mimics a browser and logs in to ebay Imran Khalid
ftpupload FTP upload to a remote site Daniel Stenberg
getbinarypageinvar Get the contents of a web page as a binary into a php variable.
getpageinvar Get the contents of a remote web page into a PHP variable
google-analytics-login This code posts all the correct post fields to Googles universal Account Services login and brings the user directly to the AdSense Overview page. Cookies are used in this example as well as setting the USER AGENT and REFERRER HTTP headers.
httpfileupload Shows how to submit and upload a file to a HTML upload form. Daniel Stenberg
linkchecker Check for a given link in a remote page Michael Phipps
multi Shows how to fetch several documents at once by using the multi interface Roman Rozanov
multipartpost Using a multipart/form-post file upload form on a web page. Pete James
put Perform a HTTP PUT to a remote site Julian Bond
resizejpg Download a remote image, resize it and show it to the user Michael Phipps
rss-adsense Follow your Adsense earnings with an RSS reader Ozh
simpleget Get a URL
simplepost Basic HTTP POST operation

The callbacks.php Example

Set callback functions to receive the HTTP response as it comes through. Written by Keyvan Minoukadeh

Author: Keyvan Minoukadeh

This script demonstrates how you can set callback functions to receive the
HTTP response as it comes through.

The advantage of this is that you don't have to wait for the whole response
to be returned before you start work on it, you can monitor for certain
headers, start outputting while you're receiving, etc..

I wasn't aware these cURL options were available in PHP, but noticed them being
used by Alan Knowles: <>


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, '');
// Set callback function for headers
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
// Set callback function for body
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'read_body');


if ($error = curl_error($ch)) {
    echo "Error: $error<br />\n";

// define callback functions

// Notes from <>:
// Return the number of bytes actually written or return -1 to signal error to
// the library (it will  cause it to abort the transfer with a CURLE_WRITE_ERROR
// return code). (Added in 7.7.2)
function read_header($ch, $string)
    $length = strlen($string);
    echo "Header: $string<br />\n";
    return $length;

// Notes from <>:
// Return the number of bytes actually taken care of.  If that amount differs
// from the amount passed to your function, it'll signal an error to the library
// and it will abort the transfer and return CURLE_WRITE_ERROR.
function read_body($ch, $string)
    $length = strlen($string);
    echo "Received $length bytes<br />\n";
    return $length;