Blog over OpenSource,Web en ICT in het algemeen

Curl it up !

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.

Lees ook deze:

Leave a Reply

Comment moderation is enabled. Your comment may take some time to appear.

Spam protection by WP Captcha-Free