Curl is een soort techniek dat gebruik kan maken van FTP, FTPS, HTTP, HTTPS, Gopher, Telnet, DICT, FILE and LDAP. Verder ondersteunt CURL de mogelijkheden HTTPS certificaten, HTTP POST, HTTP PUT, FTP uploading, Kerberos, HTTP form-based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling en nog veel meer technieken. CURL, eigenlijk cURL is open source.
Dit is een definitie zoals die te vinden is op de website van bijvoorbeeld sitemasters. Het zegt eigenlijk niet zo heel veel. Als je het mij vraagt is cURL een mogelijkheid om binnen PHP-scripts resources buiten je website aan te spreken om bijvoorbeeld data op te halen, of automatisch gegevens te posten (lees spam robot) maar ook om de status code van een webserver op te vragen. Dat is handig, op deze manier kan je een monitor tool bouwen die een aantal van je websites monitort bijvoorbeeld.
De status code van een webserver is het antwoord wat je krijgt zodra je verbinding maakt met die webserver. Het eerste contact zeg maar.
Onderstaande lijst geeft een aantal van deze status code’s weer:
| HTTP Protocol Code | Betekenis |
| 100 | Continue |
| 101 | Switching Protocols |
| 200 | OK (no error) |
| 201 | Created |
| 202 | Accepted |
| 203 | Non-Authoritative Information |
| 204 | No Content |
| 205 | Reset Content |
| 206 | Partial Content |
| 300 | Multiple Choices |
| 301 | Moved Permanently |
| 302 | Moved Temporarily |
| 304 | Not Modified |
| 305 | Use Proxy |
| 400 | Bad Request |
| 401 | Unauthorized |
| 402 | Payment Required |
| 403 | Forbidden |
| 404 | Not Found |
| 405 | Method Not Allowed |
| 406 | Not Acceptable |
| 407 | Proxy Authentication Required |
| 408 | Request Time-Out |
| 409 | Conflict |
| 410 | Gone |
| 411 | Length Required |
| 412 | Precondition Failed |
| 413 | Request Entity Too Large |
| 414 | Request-URL Too Large |
| 415 | Unsupported Media Type |
| 500 | Server Error |
| 501 | Not Implemented |
| 502 | Bad Gateway |
| 503 | Out of Resources |
| 504 | Gateway Time-Out |
| 505 | HTTP Version not supported |
De status code 404 en 200 zijn waarschijnlijk het meest bekend, die zie je wel eens in je browser scherm als een website wordt benaderd maar de opgevraagde pagina bestaat niet of kan niet worden weergegeven. De informatie die getoond wordt kan zelfs middels HTML templates naar eigen smaak terug worden gegegeven.
Stel je wilt een script maken die controleert of je website up is, bijvoorbeeld via een cron-job, en je deze gegevens mailt, twittert of toont in een rss feed. Een webpagina maken met mooie groene en rode buttons bijvoorbeeld om aan te geven of je website up is kan natuurlijk ook. Dit voorbeeld dient alleen om te laten zien wat je met cURL kan doen en hoe je de status code van een web server opvraagt.
$ch = curl_init('http://www.life-blog.nl/');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,10);
$output = curl_exec($ch)
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpcode;
In bovenstaand voorbeeld zou je [200] terugkrijgen als de website zonder fout getoond kan worden. Geen aktie nodig dus, maar als je nu status code 400 terugkrijgt kan je een script aanknopen die bijvoorbeeld een twitter message post op een private account dat je volgt. Daarvoor moet je gebruik maken van de zogenaamde twitter API. Ook dat kan weer met cURL. Hieronder zie je een voorbeeld van het posten naar twitter.
$username = 'username';
$password = 'password';;
$message = 'Het bericht dat je wil versturen';;
$url = 'http://twitter.com/statuses/update.xml';;
$curl_handle = curl_init();;
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)) {
echo 'message';
} else {
echo 'success';
}
Er zijn natuurlijk veel meer voorbeelden denkbaar, en de voorbeelden zijn simpel maar kunnen een leuke start zijn voor diegenen die met cURL in de weer willen.





