error = $lang['falta_url'];
return false;
} else {
$parse = parse_url($url_tmp);
if ($parse['scheme']) {
if (strtolower($parse['scheme']) != 'http') {
$this->error = sprintf($lang['scheme_no'], $parse['scheme']);
return;
} else {
$this->uri_real = $url_tmp;
}
} else if (!$parse['scheme']) {
$this->uri_real = 'http://'.$url_tmp;
}
if (strtolower($parse['host']) == 'localhost') {
$this->error = 'Sólo se admiten páginas remotas';
return false;
}
}
} // Fin constructor clase
/*============================================
Function: fetch the contents of a page
============================================*/
function fetch($URI, $BASE, $OPT){
if (!$this->_connect($URI)) {
return false;
}
if ($BASE == 'base') {
// Definir URI y obtener la URI de base
define ('URL', $URI);
$this->Parse_URI(URL);
}
if ($OPT == 'arry') {
$this->File_array();
}
return true;
}
/*=====================================
Function: make a connection
=====================================*/
function _connect($uri) {
$cookie = '../monitor/admin/control/cookie.txt';
$header = array (
0 => 'Accept: text/html, text/css, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1',
1 => 'Cache-Control: max-age=0',
2 => 'Connection: keep-alive',
3 => 'Keep-Alive: 300',
4 => 'Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7',
5 => 'Accept-Language: en,es;q=0.9,pt;q=0.8',
6 => 'Pragma: ');
$s = curl_init();
curl_setopt($s,CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($s,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($s,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($s,CURLOPT_ENCODING,'gzip,deflate');
curl_setopt($s,CURLOPT_FAILONERROR,true);
curl_setopt($s,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($s,CURLOPT_HEADER,$optheader);
curl_setopt($s,CURLOPT_HTTPHEADER,$header);
curl_setopt($s,CURLOPT_MAXREDIRS,5);
curl_setopt($s,CURLOPT_NOBODY,false);
curl_setopt($s,CURLOPT_REFERER,'http://www.google.com');
curl_setopt($s,CURLOPT_RETURNTRANSFER,true);
curl_setopt($s,CURLOPT_TIMEOUT,20);
curl_setopt($s,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($s,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1');
$info = array();
$uri = str_replace(array('%2F','%3A','&','%3F','%3D'), array('/',':','&','?','='), $uri);
curl_setopt($s,CURLOPT_URL,$uri);
$this->results = @curl_exec($s);
$info = curl_getinfo($s);
$error = curl_error($s);
if ($info['http_code'] != 200) {
$error = 'HTTP Code '.$info['http_code'];
}
curl_close($s);
if ($error != '') {
$this->error = $error;
return false;
}
return true;
}
/*=======================================
Función: Analiza una URI y devuelve
$url y $url_base
=======================================*/
function Parse_URI($uri) {
$parse = parse_url($uri);
$url_b = strtolower($parse['scheme'])."://";
$url_b .= $parse['host'] ? $parse['host'] : '';
$url_b .= $parse['port'] ? ':'.$parse['port'] : '';
if (isset($parse['path'])) {
if((ereg("\.",$parse['path'])) || ($parse['query']) || ($parse['fragment']) || (substr($uri,-1) != "/")) {
$separa = explode("/",$parse['path']);
$sacar = array_pop($separa);
$parse['path'] = rtrim($parse['path'],$sacar);
$url_b .= $parse['path'];
} else {
$url_b .= $parse['path'];
}
}
if(substr($url_b,-1) != "/") {
$url_b .= "/";
}
define ('URL_BASE', $url_b);
} // Fin función Parse_URI
function File_array() {
global $tags, $contents;
$search = array (
"@()@ismUe",
"@()@ismUe",
"@@mU" );
$replace = array (
"stripslashes('\\1').stripslashes(htmlspecialchars('\\2')).'\\3'",
"stripslashes('\\1').stripslashes(htmlspecialchars('\\2')).'\\3'",
"" );
$fp = preg_replace($search,$replace,$this->results);
preg_match_all("@(<[^>]+>)([^<]*)@m", $fp, $out, PREG_PATTERN_ORDER);
$s_tag = array ("@\n+@", "@\s\s+@", "@\s*=\s*@");
$r_tag = array (" ", " ", "=");
for ($i=0; $i < count($out[0]); $i++) {
$tag_tmp = preg_replace($s_tag, $r_tag, $out[1][$i]);
$tags[$i] = $tag_tmp;
$cont_tmp = trim($out[2][$i]);
if (!preg_match("@<(style|script)@", $tag_tmp)) {
$cont_tmp = preg_replace("@\n+@", "\n", $cont_tmp);
}
$contents[$i] = trim($cont_tmp);
}
}
}
?>