Ferramentas de Utilizador

Ferramentas de Site


dev_web:php:snippet:localizacao_ip

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'];
        }
}
?>
Tópico de discussão no fórum: Localização através do IP
dev_web/php/snippet/localizacao_ip.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)