// MultiClick Publisher Code
// Language: PHP
// Version: 20080229
function multiclick_append_params(&$params, $key, $val) {
if(!empty($val)) $params .= ("&" . urlencode($key) . "=" . urlencode($val));
}
function multiclick_ad($multiclick_ad_params=array()){
// Основные данные
$multiclick_uri = "/show.php?placement=3940";
multiclick_append_params($multiclick_uri,"version","20080229-PHPS");
multiclick_append_params($multiclick_uri,"ua",$_SERVER["HTTP_USER_AGENT"]); // юзер-агент
multiclick_append_params($multiclick_uri,"ip",$_SERVER["REMOTE_ADDR"]); // ip пользователя
multiclick_append_params($multiclick_uri,"ip2",$_SERVER["HTTP_X_FORWARDED_FOR"]); // ip пользователя
multiclick_append_params($multiclick_uri,"ruri",$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]); // адрес страницы
multiclick_append_params($multiclick_uri,"charset",MULTICLICK_CHARSET);
// Специфические данные от Opera-muni
multiclick_append_params($multiclick_uri,"miniua",$_SERVER["HTTP_X_OPERAMINI_PHONE_UA"]); // Исходный юзер-агент
multiclick_append_params($multiclick_uri,"miniphone",$_SERVER["HTTP_X_OPERAMINI_PHONE"]); // телефон
foreach ($multiclick_ad_params as $key=>$value)
multiclick_append_params($multiclick_uri,$key,$value);
$multiclick_request = @fsockopen("".MULTICLICK_HOST."", 80);
if ($multiclick_request) {
stream_set_timeout($multiclick_request, MULTICLICK_TIMEOUT);
fwrite($multiclick_request, "GET {$multiclick_uri} HTTP/1.0\r\n");
fwrite($multiclick_request, "Host: " . MULTICLICK_HOST . "\r\n\r\n");
$multiclick_info = stream_get_meta_data($multiclick_request);
$multiclick_timeout = $multiclick_info['timed_out'];
$multiclick_contents = "";
$multiclick_body = false;
while (!feof($multiclick_request) && !$multiclick_timeout) {
$multiclick_line = fgets($multiclick_request);
if(!$multiclick_body && $multiclick_line == "\r\n") $multiclick_body = true;
if($multiclick_body && !empty($multiclick_line)) $multiclick_contents .= $multiclick_line;
$multiclick_info = stream_get_meta_data($multiclick_request);
$multiclick_timeout = $multiclick_info['timed_out'];
}
fclose($multiclick_request);
if($multiclick_timeout) {
return "";
} else {
return $multiclick_contents;
}
}
}
define("MULTICLICK_TIMEOUT", 1);
define("MULTICLICK_HOST", "show.multiclick.ru");
define("MULTICLICK_CHARSET", "utf-8");// кодировка, в которой нужно выдавать код
// Анкетные даные для социального таргетинга:
$multiclick_ad_params = array(
"gender"=>"", // OPTIONAL пол пользователя m[ale] or f[emale]
"age"=>"", // OPTIONAL возраст пользователя от 1 до 99
"region"=>"", // OPTIONAL название города или региона
"interest"=>"", // OPTIONAL интересы пользователя через запятую
"sid"=>"8237", // id социальной сети (=id партнера в системе МультиКлик)
"uid"=>"" // OPTIONAL Уникальный идентификатор пользователя (не обязан совпадать с оригинальным в системе)
);
echo multiclick_ad($multiclick_ad_params);
error_reporting(7);
define(START_TIME,microtime(true));
define(NL,chr(13).chr(10));
define(ADS_TIMEOUT,5);
#ID площадки
$client_ID = '429';
#Секретный уникальный код площадки
$client_CODE = '1280415856';
echo mobi_ads($client_ID, $client_CODE);
echo NL.'<!--MOBIADS '.sprintf("%f", microtime(true)-START_TIME).'-->'.NL;
function mobi_ads($id, $key) {
$headers = get_http_headers();
foreach(array_keys(array_intersect($headers,
array('Cookie', 'Authorization'))) as $key)unset($headers[$key]);
$info = serialize(array('id' => intval($id),'ip' =>
$_SERVER['REMOTE_ADDR'],'headers' => $headers,));
$post = 'secure='.md5($key.'/'.$info.'/'.$key).'&info='.urlencode($info);
return ADS_get_response($post);
}
function get_http_headers() {
foreach ($_SERVER as $name => $value)
{if(strncmp($name, 'HTTP_', 5) == 0)
{$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ',
substr($name, 5)))))] = $value;}}
return $headers;
}
function ADS_get_response($POST = '', $HOST = '77.221.155.51:80', $PATH = '/ads.php') {
$URL = 'http://'.$HOST.$PATH;
//Socket start
$request = 'POST '.$PATH.' HTTP/1.0'.NL.
'Host: '.$HOST.''.NL.'Connection: Close'.NL.
'Content-Type: application/x-www-form-urlencoded'.NL.
'Content-Length: '.strlen($POST).NL.NL.$POST;
if(false !== $socket = fsockopen($HOST, $port, $errno, $errstr, ADS_TIMEOUT))
{
fwrite($socket, $request);
$contents = '';
while(!feof($socket)){$contents .= fread($socket, 1024);}
fclose($socket);
$ex = explode(NL.NL,trim($contents));
if(strpos($ex[0],'200 OK') === false)
$contents = ''; else $contents = $ex[1];
return $contents.NL.'<!--so-->';
}
else
{
#return '<!--ERROR: '.$errstr.' ('.$errno.')-->';
}
//Socket end
//file_get_contents + context start
if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
$context = stream_context_create(array (
'http' => array (
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded'.PHP_EOL,
'content' => $POST,
'timeout' => ADS_TIMEOUT,
),
));
$contents = file_get_contents($URL,false,$context);
if(strpos($http_response_header[0],'200 OK') === false)
$contents = '';
return $contents.NL.'<!--fg-->';
}
//file_get_contents + context end
//Curl start
if(
in_array('curl', get_loaded_extensions())&&
function_exists("curl_init") &&
function_exists("curl_setopt") &&
function_exists("curl_exec") &&
function_exists("curl_close")) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_TIMEOUT, ADS_TIMEOUT);
$contents = curl_exec($ch);
$header = curl_getinfo($ch);
curl_close($ch);
if($header['http_code'] != 200)
$contents = '';
return $contents.NL.'<!--cu-->';
}
//Curl end
}
echo mobi_ads($client_ID, $client_CODE);