Просмотр файла libs/mobiads.php

Размер файла: 4.27Kb
<?php
/*
*	Динамичный код. Инструкция по установке.
*	1. Вам нужно сохранить данный код в отдельный PHP-файл.
*	2. В простейшем случае, если вы хотите выводить один рекламный блок на страницу,
*	   то достаточно просто сделать include(); файла с кодом.
*	3. Если рекламных блоков будет несколько, то делаете один инклуд в том месте, где будет первый рекламный блок,
*	   а далее для вывода рекламы используйте данную функцию: echo mobi_ads($client_ID, $client_CODE);
*	   Внимание! Два раза инклудить этот код на странице не получится, и будет выдавать fatal error.
*
*	По всем возникшим вопросам/поблемам с кодом обращайтесь в тех-поддержку, через систему тикетов.
*/

#error_reporting(0);
define('START_TIME',microtime(true));
define('NL',chr(13).chr(10));
define('ADS_TIMEOUT',3);

#ID площадки
$client_ID   = '1574';
#Секретный уникальный код площадки
$client_CODE = '1268150108';

if(!function_exists('mobi_ads'))
{
	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);
	}
}

if(!function_exists('get_http_headers'))
{
	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;
	}
}

if(!function_exists('ADS_get_response'))
{
	function ADS_get_response($POST = '', $HOST = 'mobiads.ru: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 = 80, $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);
echo NL.'<!--MOBIADS '.sprintf("%f", microtime(true)-START_TIME).'-->'.NL;
?>