Netbank Prämien Girokonto und Depot
| Categories: Depot News, Girokonto News
/**
* Tarifcheck24 PHP Includes Version 1.2
*
* Änderungen Version 1.1:
*
* - Neuer Parameter beim Erstellen der Klasse:
* $mode ermöglicht auch das Laden vom Kurzvergleich,
* welcher für manche Produkte verfügbar ist. Bezüglich
* der Verfügbarkeit im Werbemittelbereich informieren
*
* Änderungen Version 1.2:
*
* - Neuer Paraemter für UTF8-Seiten:
* Oft müssen die Includes in Seiten mit dem Zeichensatz
* UTF-8 eingebettet werden, z.B. bei Seiten mit mehreren Sprachen
* oder aktuellen Content Management Systemen. Setzt man den Parameter
* true werden automatisch eingehende und ausgehende Daten konvertiert
* und korrekt in UTF-8 Seiten eingebettet. Bleibt der Parameter auf
* false (Standardwert) dann wird weiterhin vom ISO Zeichensatz
* ausgegangen.
*
* Änderungen Version 1.3:
* Präfixen aller tc24 Parameter um Konflikte zu vermeiden.
* p/page_id handling fixes
*
* Dieses Skript greift während der Laufzeit direkt auf
* den Tarifcheck24 Server zu, und übermittelt als eine Art
* Proxy die Informationen zurück.
*
* Weitere Informationen: siehe Beispieldatei.
*
*/
class t24form {
var $insurance_id = 1;
var $partner_id = 360;
var $ad_id = 338;
var $tracking = '';
var $referer_url = '';
var $css_url = '';
var $mode = '';
var $uf8 = false;
var $hostname = 'form.partner-versicherung.de';
var $url = 'http://form.partner-versicherung.de/show2.php';
var $base_url = 'http://form.partner-versicherung.de';
var $system_url = NULL;
var $session = NULL;
var $wp_id = 0;
var $body = '';
var $head = '';
/**
* Starten der Tarifcheck24 Includes
*
* @param int $insurance_id Produkt-ID (siehe Dokumentation)
* @param int $partner_id Ihre Partner-ID
* @param string $tracking optional: Manuelle Tracking-ID
* @param string $referer_url optional: Referer des Kunden (wird in Statistiken übertragen)
* @param string $css_url optional: CSS URL für die Integration in den Vergleich
* @param string $mode optional: Für ausgewählte Produkte gibt es Kurzvergleiche (aktuell: PKV, BU, RIESTER)
* @param boolean $utf8 optional: Wenn auf True gesetzt wird davon ausgegangen, dass die umgebende Seite und alle Parameter UTF8 sind, ansonsten wird von ISO-8859-1 ausgegangen
* @return t24form
*/
function t24form($insurance_id, $partner_id, $tracking = '', $referer_url = '', $css_url = '', $mode = '', $utf8 = false) {
$this->insurance_id = !empty($insurance_id) ? (int)$insurance_id : 1;
$this->partner_id = !empty($partner_id) ? (int)$partner_id : 360;
$this->tracking = $tracking;
$this->ad_id = 15; // Interner Parameter
$this->referer_url = $referer_url;
$this->css_url = $css_url;
$this->uf8 = is_bool($utf8) ? $utf8 : false;
if ($mode == 'short') {
$this->mode = $mode;
$this->ad_id = 343;
}
}
function transform_input($text) {
return $this->uf8 == true ? utf8_decode($text) : $text;
}
function transform_output($text) {
return $this->uf8 == true ? utf8_encode($text) : $text;
}
function get_start_url() {
$insurance_id = (int)$this->insurance_id;
$partner_id = (int)$this->partner_id;
$ad_id = (int)$this->ad_id;
$tracking = urlencode($this->transform_input($this->tracking));
$referer_url = urlencode($this->transform_input($this->referer_url));
$css_url = urlencode($this->transform_input($this->css_url));
$mode = urlencode($this->transform_input($this->mode));
$fp = fsockopen($this->hostname, 80, $errno, $errstr, 5);
if (!$fp) {
return NULL;
} else {
$out = "GET /show.php?insurance_id=$insurance_id&partner_id=$partner_id&ad_id=$ad_id&tracking=$tracking&referer_url=$referer_url&css_url=$css_url&mode=$mode HTTP/1.0\r\n";
$out .= 'Host: ' . $this->hostname . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$result = '';
while (!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);
$tmp = preg_split("/^(.*?)\r?\n\r?\n(.*)$/", $result);
if (!empty($tmp[0]) && preg_match('/Location: ([^\n]*)/si', $tmp[0], $matches) == 1) {
preg_match('/([a-z0-9]{32})/is', $result, $matches2);
$this->set_session($matches2[1]);
return trim($matches[1]);
} else {
return NULL;
}
return $this->transform_output($result);
}
}
function set_body($body) {
$this->body = $body;
}
function get_body() {
return $this->body;
}
function set_session($session) {
$this->session = $session;
}
function get_session() {
return $this->session;
}
function set_head($head) {
$this->head = $head;
}
function get_head() {
return $this->head;
}
function request($mode, $url, $request) {
$data = '';
$parameter = array();
// extract tc24_ parameters, ignore the rest
foreach ($request as $key => $value) {
if (substr($key, 0, 5) === 'tc24_') {
$parameter[substr($key, 5)] = $value;
}
}
// handle post
if ($mode == 'POST') {
$fp = fsockopen($this->hostname, 80, $errno, $errstr, 5);
if (!$fp) {
return NULL;
} else {
$parameter['registered_ip'] = $_SERVER['REMOTE_ADDR'];
$out = 'POST ' . $url . " HTTP/1.0\r\n";
$out .= 'Host: ' . $this->hostname . "\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$param = '';
while (list($name, $value) = @each($parameter)) {
$param[] = $name . '=' . urlencode($this->transform_input($value));
}
$param = implode('&', $param);
$out .= 'Content-length: ' . strlen($param) . "\r\n";
$out .= "Connection: close\r\n\r\n";
$out .= $param;
fwrite($fp, $out);
while (!feof($fp)) {
$data .= fgets($fp, 128);
}
fclose($fp);
// Follow Location-Header (we only expect internal Headers here)
$tmp = preg_split("/^(.*?)\r?\n\r?\n(.*)$/", $data);
if (!empty($tmp[0]) && preg_match('/Location: ([^\n]*)/is', $tmp[0], $matches) == 1) {
if ($matches[1]{0} == '/') {
$data = file_get_contents('http://' . $this->hostname . '/' . $this->get_session() . trim($matches[1]));
} else {
$data = file_get_contents('http://' . $this->hostname . '/' . $this->get_session() . '/' . trim($matches[1]));
}
}
}
} else {
$parts = parse_url($url);
if (isset($parts['host']) && $parts['host'] == $this->hostname) {
$data = file_get_contents($url);
} else {
$data = 'access violation';
}
}
$data = $this->transform_output($data);
// Replace
$replace = array(
'method="post"' => 'method="get"',
'href="javascript:' => 'href="javascript:',
'src="http://www.' => 'src="http://www.',
'href="http://' => 'href="http://',
'href="' => 'href="' . $this->base_url,
'src=""' => 'src=""',
'src="' => 'src="' . $this->base_url
);
$data = strtr($data, $replace);
// Insert anchor
$data = preg_replace('/action="([^"]*)"/is', 'action="' . $this->system_url . '#t24form"', $data);
// prefix all parameters
$data = preg_replace('~<(input|select|textarea)(.*?)name="(.+?)"(.*?)>~is', '<\1\2name="tc24_\3"\4>', $data);
// add wordpress page_id
$data = str_replace(
'' . (empty($this->wp_id) ? '' : '') . ']*\>(.*)\<\/body/is', $data, $matches) == 1) {
$this->set_body($matches[1]);
}
// Get head
if (preg_match('/head\>(.*)\<\/head/is', $data, $matches) == 1) {
$matches[1] = preg_replace('/(\.*\<\/title\>)/is', '', $matches[1]);
$this->set_head($matches[1]);
}
return $data;
}
function handle() {
if (empty($this->system_url)) {
$this->system_url = $_SERVER['SCRIPT_URI'];
}
if (!empty($_REQUEST['tc24_page']) && !empty($_GET['tc24_session']) && preg_match('/^([a-z0-9]{32})$/is', $_GET['tc24_session'])) {
$this->set_session($_GET['tc24_session']);
$this->request('POST', '/' . $this->get_session() . '/show2.php', $_REQUEST);
} else {
$url = $this->get_start_url();
$this->request('GET', $url, array());
}
}
}
?>