Saber localização através do IP
<?php
$ip = new ip();
$msg[] = "<b>Meu IP:</b> $ip->ip";
$msg[] = "<b>País:</b> $ip->pais <img src=\"$ip->img\">";
$msg[] = "<b>Estado/Provincia:</b> $ip->estado";
$msg[] = "<b>Cidade:</b> $ip->cidade";
$msg[] = "<b>Caixa Postal:</b> $ip->caixa_postal";
$msg[] = "<b>Latitude:</b> $ip->latitude";
$msg[] = "<b>Longitude:</b> $ip->longitude";
$msg[] = "<b>ISP:</b> $ip->isp";
$msg[] = "<b>Organização:</b> $ip->org";
echo implode( "\r\n<br />", $msg );
class ip {
var $timeout = 5;
var $ip = '';
var $pais = '';
var $cidade = '';
var $estado = '';
var $isp = '';
var $img = '';
var $org = '';
var $caixa_postal = '';
var $latitude = '';
var $longitude = '';
var $vars = array( 'pais' => 'IP country', 'estado' => 'IP state', 'cidade' => 'IP city', 'caixa_postal' => 'IP postcode', 'latitude' => 'latitude', 'longitude' => 'longitude', 'isp' => 'isp', 'org' => 'organization' );
function ip() {
$data = $this->getData();
if(empty( $data )) {
return false;
}
$data = $this->parse_data( $data );
$this->setVars( $data );
return true;
}
function getData() {
$fp = fsockopen( 'www.ip-adress.com', 80, $errno, $errstr, 5 );
if(!$fp) {
return false;
}
$query = "iq={$_SERVER['REMOTE_ADDR']}&submit=lookup+any+ip";
$out = "POST / HTTP/1.0\r\n";
$out .= "Host: www.ip-adress.com\r\n";
$out .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
$out .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
$out .= "Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
$out .= "Accept-Encoding: gzip,deflate\r\n";
$out .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
$out .= "Keep-Alive: 300\r\n";
$out .= "Connection: keep-alive\r\n";
$out .= "Referer: http://www.ip-adress.com/\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: ". strlen( $query ) ."\r\n\r\n";
$out .= "$query\r\n";
fwrite($fp, $out);
$data = '';
while (!feof($fp)) {
$data .= fgets($fp, 13422);
}
fclose( $fp );
return $data;
}
function parse_data( $data ) {
foreach( $this->vars as $set => $var ) {
if($exp = explode( '<font face="verdana" size="2">'. $var .':</font></th>', $data )) {
if(!empty( $exp[1] )) {
$exp = explode( '<td bgcolor="#FFFFCC"><font face="verdana" size="2">', $exp[1] );
$res[$set] = explode( '</font></td>', $exp[1] );
}
}
if($set == "pais") {
$exp = explode( '<font face="verdana" size="2">'. $var .':</font></th>', $data );
$exp = explode( '<td bgcolor="#FFFFCC">', $exp[1] );
$exp = explode( '<font face="verdana" size="2">', $exp[1] );
preg_match( '<img src="(.*?)">', $exp[1], $img );
$exp = explode( '<img src="'. $img[1] .'">', $exp[1] );
$res["img"] = "http://www.ip-adress.com". $img[1];
$res[$set] = explode( '</font>', $exp[1] );
}
}
return $res;
}
function setVars( $data ) {
foreach( $this->vars as $var => $valor ) {
if(!empty( $data[$var][0] )) {
$this->$var = trim($data[$var][0]);
}
}
$this->img = $data['img'];
$this->ip = $_SERVER['REMOTE_ADDR'];
}
}
?>