Curl HTTP Client

Frequently, in my daytime job I have to fetch data from various url’s, either by sending get or post request, binding to different IP address etc. Long time I used my own socket based HTTP class, although I wasn’t quite happy with perfomances and various other things with it. I already used curl cli tool (mostly for debugging purposes), but didn’t really liked it’s php api, so I’ve decided to take some spare time and make some kind of oop wrapper for it, which should be easier to use for easy stuff like sending get/post request etc.

I use this class several months since then, and it evolved over time whenever I needed some new feature. Since various of my colleagues found it very usefull (some of them even sent me new methods for it), I’ve decided to put it out for public. Recently I submitted a code to phpclasses.org, and today got confirmation that class is officially approved.

Update 03/01/2007
New version 1.1 released with new features: fetch into file, upload, proxy etc.

Update 15/02/2008
New version 1.2 released with few bug fixes. New features are ability to send post string as string argument in send_post_data method, ability to accept gzipped content, close curl session etc.
You can download class and example files from here.

Here are few usage examples.

<?php
/**
 * @version $Id$
 * @package dinke.net
 * @copyright © 2005 Dinke.net
 * @author Dragan Dinic
 */

require_once("curl_http_client.php");

$curl = &new Curl_HTTP_Client();

//pretend to be IE6 on windows
$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$curl->set_user_agent($useragent);

//uncomment next two lines if you want to manage cookies
//$cookies_file = "/tmp/cookies.txt";
//$curl->store_cookies($cookies_file);

//Uncomment next line if you want to set credentials
//$curl->set_credentials($username, $password);

//Uncomment next line if you want to set specific referrer
//$curl->set_referrer("http://my.referrer.url");

//if you want to send some post data
//form post data array like this one
$post_data = array('login' => 'pera', 'password' => 'joe', 'other_foo_field' => 'foo_value');
//and send request to http://www.foo.com/login.php. Result page is stored in $html_data string
$html_data = $curl->send_post_data("http://www.foo.com/login.php", $post_data);

//You can also fetch data from somewhere using get method!
//Fetch html from url
$html_data = $curl->fetch_url("http://www.foo.com/foobar.php?login=pera&password=joe&other_foo_field=foo_value");

//if you have more than one IP on your server,
//you can also bind to specific IP address like ...
//$bind_ip = "192.168.0.1";
//$curl->fetch_url("http://www.foo.com/login.php", $bind_ip);
//$html_data = $curl->send_post_data("http://www.foo.com/login.php", $post_data, $bind_ip);
?>

Google Page Creator

Ne znam za vas, ali meni sve teže uspeva da ispratim sve servise kojim nas Google obasipa u poslednje vreme . GMail, GMap, GTalk, GCal, GSpreadsheets, … a od danas na raspolaganju nam je i Google Page Creator.

Google Page Creator je još jedna u nizu Web 2.0 aplikacija, a služi kako joj i samo ime kaže za kreiranje Web Strana. Kao i kod ostalih sličnih alata, nije potrebno nikakvo poznavanje html-a, već se Web strane kreiraju jednostavno, direktno iz browsera. Za razliku od većine sličnih alata, Page Creator se izuzetno lako koristi, tako da u roku od svega par minuta možete doći do svoje prezentacije, koju će google potpuno besplatno hostovati na adresi http://vasgooglenalog.googlepages.com.

Rezultate moje peto-minutne sesije u Page Creatoru možete videti ovde. :)

Blog na engleskom

Već duže vreme nisam pisao ništa o programiranju i uopšteno stvarima kojima se pretežno bavim svih ovih godina. Razlog je jednostavan, nekoliko mojih postova posvećenih istom (poput par MySQL tutorijala npr.) nisu preterano zainteresovali ovdašnju publiku. Obzirom da sam uprkos tome dobio nekoliko pozitivnih feedbackova, rešio sam da utrošim malo slobodnog vremena i nekoliko najinteresantnijih zapisa prevedem na engleski. Takođe, ubuduće ću takve zapise odmah pisati na engleskom (oni koji to žele da prate engleski verovatno već odlično poznaju :).

Inače, za razdvajanje srpskog bloga od engleske verzije koristio sam Gengo WP plugin. Srpski je i dalje default jezik, a što se feedova tiče, sada postoje dva feed-a, za svaki jezik pojedinačno.

Ana Ivanović osvojila Montreal

Nakon fantastične igre u polufinalu protiv Safinove, Ana je ponovila isto i u finalu protiv velike Martine Hingins!

U meču koji je trajao manje od sat vremena, 18-godišnja srpska teniserka pokazala je totalnu dominaciju i prosto počistila Martinu sa terena. Meč, koga su karakterisali fantastični Anini vineri i po koja neiznuđena greška, na kraju je završen rezultatom 6-2, 6-3 za Anu.

Ana Ivanovic

Ono što posebno raduje jeste veliki napredak u igri kod Ane, što je očigledno direktna posledica saradnje sa novim trenerom (David Taylor).

Finalni meč sam inače gledao u direktnom prenosu na Eurosportu 2 (kao i polufinalni koji je nekoliko puta prekidan zbog kiše). Meč naravno nije prenošen na RTS-u, a o tome kako “stručno” ista izveštava o tome možete videti na njihovom sajtu, gde se u vesti o plasmanu u finale pominju čas Ana Ivanović, čas Jelena Janković.

rtsweb.gif

Оптимизовано за Интернет Експлорер

Posle petice šestice na SP-u, mislili ste da je kraj blamažama našeg fudbalskog saveza ? Obzirom na “look & feel” novog sajta (sa novim imenom, na novoj adresi) izgleda da tome ipak nema kraja.

Totalni krah sajta na Firefoxu, mešavina ćirilice i latinice na stranama na engleskom, sve u svemu, utisak kao da je sajt radio neki osnovac u najboljem slučaju hakujući PHP Nuke. Jadno.

Fudbalski Savez Srbije

A novi dresovi … o njima bolje i da ne pričam.

Next Page »