domingo, 24 de noviembre de 2013

Obtener IP saliente y pais de origen en php


Si en vuestra aplicación Firefox OS queréis obtener la dirección saliente del dispositivo y país de origen.
como que en javascript de momento no hay manera de obtener la dirección saliente del dispositivo Firefox OS debemos recurrir a una petición servidor, mediante una api JSON

debemos tener un servidor web que execute PHP

crear un archivo getip.php con el siguiente código php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);

header('Content-type: text/json');
header('Content-type: application/json');


function getIPInfo() {
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];
    $result  = "Unknown";
 $output = array();
 $output['Proxy'] = false;
 
    if(filter_var($client, FILTER_VALIDATE_IP)) {
        $ip = $client;
    } elseif(filter_var($forward, FILTER_VALIDATE_IP)) {
        $ip = $forward;
  //proxy detect
  $output['Proxy'] = true;
    } else {
        $ip = $remote;
    }
 $output['Ip'] = $ip;
 $output['Host'] = gethostbyaddr($_SERVER['REMOTE_ADDR']);
 
    $ip_data = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));
    if($ip_data && $ip_data->geoplugin_countryName != null) {
        $output['Location'] = $ip_data->geoplugin_city . ' ' .$ip_data->geoplugin_countryName;
    }

    return $output;
}

$output = json_encode(getIPInfo());
echo $output;
la dirección IP la obtenemos de las variables del servidor
HTTP_CLIENT_IP o HTTP_X_FORWARDED_FOR y REMOTE_ADDR
Para obtener el nombre de host usamos
gethostbyaddr($_SERVER['REMOTE_ADDR']);
y para obtener el identificador del país de la IP, el código llama una API de geoplugin.net
$ip_data = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));
Si probamos nuestroservidor/getip.php nos debe devolver en formato JSON

{"Proxy":false,"Ip":"999.999.999.999","Host":"nombre host o bien la misma ip","Location":"ciudad pais"}
proxy: dependiendo si se sale por un proxy o no
Ip: Número IP
Host: Nombre del HOST, si no se puede resolver devuelve la IP
Location: ciudad y pais separado por un espacio
Categories: ,

0 comentarios:

Vistas de página en total