Función PHP para mostrar los datos de una IP
¿Alguna vez necesitaste saber que lenguaje utiliza el usuario?, ¿Necesitaste saber que moneda utiliza o sobre que zona está? ¿Quizá eres de los que les hace el boicot a telefónica u otra así por que le ponen el ADSL a veces y quieres avisar a todo el que utiliza sus servicios? !Pues te traigo la solución a tus problemas! La librería que hoy os presento utiliza el servicio de ippages.com para detectar todos esos parámetros y muchos mas a partir de una IP dada.
La función se llama ip_tool() y viene en 3 sabores: Original, "text" y "clear". La forma de utilización es muy sencilla. Escribimos dentro de la función como 1º parámetro la IP a buscar y como segundo parámetro podemos utilizar "clear" para que nos ordene los contenidos de salida, "text" para que muestre el contenido en formato texto cambiando los caracteres especiales de su formato original a texto o dejarlo sin nada y que salga como lo obtiene directamente, pero limpio de variables vacías.
Nuestra función se apoya para limpiar los datos en la función _clear() que también es necesario incluir para su correcto funcionamiento.
-
function _clear($busqueda, $reemplazo, $origen){
-
if($origen == $busqueda){
-
return $reemplazo;
-
} else {
-
return $origen;
-
}
-
}
-
-
function ip_tool($ip, $decode = ""){
-
$url = "http://www.ippages.com/xml/?ip=".$ip;
-
/**/
-
foreach($vals as $valor){
-
$valor['value'] = _clear(" ", "", $valor['value']);
-
$valor['value'] = _clear("http://xml.ippages.com", "", $valor['value']);
-
$valor['value'] = _clear("http://www.ippages.com", "", $valor['value']);
-
$valor['value'] = _clear("3.01.13 added support for ?verbose=1 or ?v=1 parameter to replace ?suppress_extra=1 so that less detail is provided by default", "", $valor['value']);
-
$valor['value'] = _clear("mailto:support@privacy-ecosystem.com?subject=re: xml", "", $valor['value']);
-
$valor['value'] = _clear("available only to subscribers at ippages.com with get=nmap or get=nmapv parameter", "", $valor['value']);
-
$valor['value'] = _clear("Need to purchase additional IP Address Lookups? Or get access to all returned data fields? Or need more consistent, faster lookup results? Go to http://www.ippages.com/lookups/", "", $valor['value']);
-
$valor['value'] = _clear("provided to subscribers only", "", $valor['value']);
-
-
if($valor['value'] != "" && $valor['value'] != "no"){
-
if($decode != "text"){
-
} else {
-
$out[$valor['tag']] = $valor['value'];
-
}
-
}
-
}
-
if($decode == "clean"){
-
"id" => $out["LOOKUP_IP"],
-
"ip_decimal" => $out["LOOKUP_IP_LONG"],
-
"host" => $out["LOOKUP_HOST"],
-
"date" => $out["LOOKUP_TOR_NODE_CHECKED_DATE"],
-
"time" => $out["LOOKUP_TOR_NODE_CHECKED_TIME"],
-
"timezone" => $out["LOOKUP_TOR_NODE_CHECKED_TIMEZONE"],
-
"intervalo" => $out["LOOKUP_TOR_NODE_CHECKED_INTERVAL"]
-
)
-
),
-
"pais" => $out["LOOKUP_COUNTRY"],
-
"CODE3" => $out["LOOKUP_COUNTRY_CODE3"],
-
"bandera" => $out["LOOKUP_COUNTRY_FLAG"],
-
"moneda" => $out["LOOKUP_COUNTRY_CURRENCY"],
-
"CODE3" => $out["LOOKUP_COUNTRY_CURRENCY_CODE"],
-
"nombre" => $out["LOOKUP_COUNTRY_CURRENCY_NAME"]),
-
"continente" => $out["LOOKUP_COUNTRY_CONTINENT"],
-
"nacionalidad" => $out["LOOKUP_NATIONALITY"],
-
"gentilicio" => $out["LOOKUP_NATIONALITY_PLURAL"],
-
"europeos" => $out["LOOKUP_IN_EU"],
-
"iva" => $out["LOOKUP_EU_VAT_RATE"]
-
),
-
"pais" => $out["LOOKUP_COUNTRY2"],
-
"CODE3" => $out["LOOKUP_COUNTRY_CODE3"],
-
"continente" => $out["LOOKUP_COUNTRY2_CONTINENT"],
-
"europeos" => $out["LOOKUP_IN_EU2"],
-
"iva" => $out["LOOKUP_EU_VAT_RATE2"],
-
"provincia" => $out["LOOKUP_STATE_PROVINCE2"],
-
"lon" => $out["LOOKUP_LONGITUDE2"],
-
"lat" => $out["LOOKUP_LATITUDE2"],
-
"url" => $out["LOOKUP_MAPQUEST_URL2"]
-
)
-
),
-
"linea" => $out["LOOKUP_ORG2"],
-
"comp" => $out["LOOKUP_ORG2"],
-
"consulta" => $out["QUERY"],
-
"fecha_hora" => $out["TIMESTAMP"],
-
"GMT" => $out["TIMESTAMP_GMT"],
-
"timeserver" => $out["TIMESERVER"],
-
"respuesta_en_seg" => $out["LOAD_TIME"],
-
"busquedas" => $out["LOOKUP_COUNT"]
-
)
-
);
-
return $_out;
-
} else {
-
return $out;
-
}
-
}
En todos los ejemplos plantearemos la variable $ip definida con $_SERVER['REMOTE_ADDR'], lo que dará como resultado los datos de vuestra propia conexión. Si queréis, podéis utilizar una IP fija escribiéndola en la variable de los ejemplos entre comillas. Ejemplo: "255.255.255.255".
El ejemplo a continuación muestra que IVA se aplica en la zona donde está el usuario y la moneda que se utilizará:
-
$ip = $_SERVER['REMOTE_ADDR'];
-
$dato = ip_tool($ip, "clean");
-
echo "El Impuesto que debe pagar el usuario en <b>".$dato["local"]["pais1"]["moneda"]["nombre"]."</b>s es del <b>".($dato["local"]["pais2"]["iva"]*100)."</b>%";
El siguiente ejemplo muestra un mapa de la posible posición donde se encuentra el usuario:
El ejemplo que pongo a continuación indica que compañía utiliza el usuario… si la reconoce claro…:
-
$ip = $_SERVER['REMOTE_ADDR'];
-
$dato = ip_tool($ip, "clean");
-
if($dato["server"]["comp"] != ""){
-
$out = "La compañia que ofrece este servicio es ".$dato["server"]["comp"];
-
if($dato["server"]["linea"] != ""){
-
$out .= " a través de las lineas propiedad de ".$dato["server"]["linea"];
-
if($dato["server"]["servidor"] != ""){
-
$out .= " desde servidores propiedad de ".$dato["server"]["servidor"];
-
}
-
}
-
} else {
-
$out = "El nombre de la compañia que ofrece este servicio no está disponible en este momento";
-
if($dato["server"]["linea"] != ""){
-
$out .= " pero ofrece el servicio a través de las lineas propiedad de ".$dato["server"]["linea"];
-
if($dato["server"]["servidor"] != ""){
-
$out .= " desde servidores propiedad de ".$dato["server"]["servidor"];
-
}
-
}
-
}
-
echo $out;
Comparte este artículo
Licencia de los contenidos
© Todos los derechos reservados