Dieser Beitrag ist Teil meiner Sourecode a Day-Aktion.
Eine simple nützliche Wrapper-Klasse, die den einfachen Umgang mit CURL ermöglicht. Cookies und Referer werden automatisch gespeichert.
<?php
/**
* Simple CURL Wrapper
*
* @author Alexander Thiemann
*/
class WebBrowser {
/**
* saves curl session
*
* @var cURL
*/
private $ch = null;
/**
* saves referer
*
* @var string
*/
private $ref = "";
/**
* saves results
*/
public $result = "";
/**
* init curl
*
*/
public function __construct() {
$this->ch = curl_init();
}
/**
* destruct
*
*/
public function __destruct() {
curl_close($this->ch);
}
/**
* post
*
* @param string $url
* @param string $data
*/
public function post($url, $data) {
$this->result = "";
curl_setopt($this->ch, CURLOPT_URL, $url);
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);
$this->refer($url);
$this->setopts();
ob_start();
$this->result = curl_exec($this->ch);
ob_end_clean();
}
/**
* get
*
* @param string $url
*/
public function get($url) {
$this->result = "";
curl_setopt($this->ch, CURLOPT_URL, $url);
$this->refer($url);
$this->setopts();
ob_start();
$this->result = curl_exec($this->ch);
ob_end_clean();
}
/**
* update referer
*
* @param string $url
*/
private function refer($url) {
curl_setopt ($this->ch, CURLOPT_REFERER, $this->ref);
$this->ref = $url;
}
/**
* set global opts
*
*/
private function setopts() {
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
// you may want to change this
curl_setopt($this->ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)");
curl_setopt($this->ch, CURLOPT_COOKIEJAR, "cookie");
curl_setopt($this->ch, CURLOPT_COOKIEFILE, "cookie");
}
}
?>
Die Verwendung:
$browser = new WebBrowser();
// einfaches get request; Resultat in Datei speichern
$browser->get("http://google.de");
$fp = fopen("tmp.txt", "w+");
fwrite($fp, $browser->result);
fclose($fp);
// post request
$browser->post("http://localhost/post.php", "test_data=" . urlencode("asdfg"));
// response is in $browser->result