PHP - Obtener PAÍS a través de IP y demás info (PHP)

   
Vista:
Imágen de perfil de Mike

Obtener PAÍS a través de IP y demás info (PHP)

Publicado por Mike (54 intervenciones) el 13/08/2015 02:01:22
Buenas. Estoy armando un log de acceso para la seguridad de una web y se me ocurrió lo siguiente, en la base de datos yo almaceno la siguiente información:

2prlr4d

¿Es posible mediante algún WhoIS o algo de eso, ya teniendo la IP (sin tener que añadir más filas ni columnas) conseguir el host y el país del acceso?

Observen, quisiera lograr algo como el siguiente ejemplo:

gOcb0eE

Me pasaron esto pero desconozco como adaptarlo:

1
2
http://www.lawebdelprogramador.com/utilidades/ip.php
Utilizan la base de datos de: http://lite.ip2location.com

Ahora mismo ya almaceno la fecha y la IP, sólo debería hallar la forma de adaptar el código para que a raíz de esa IP mostrada en las otras partes de la tabla me muestre el país y mi intención también era la bandera, ya tengo las imágenes de los países guardadas. El host no sería de tanta importancia si es muy complejo de realizar, lo principal sería IP, país y bandera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<div class="tab-pane fade" id="log-de-acceso">
						<div class="col-lg-12">
                    <div class="panel panel-default">
						<div class="panel-body">
                            <div class="table-responsive">
                                <table class="table table-striped table-bordered table-hover">
                                    <thead>
                                        <tr>
                                            <th><center><p style="font-size:13px">Fecha</center></th>
                                            <th><center><p style="font-size:13px">-</center></th>
                                            <th><center><p style="font-size:13px">País</center></th>
											<th><center><p style="font-size:13px">IP</center></th>
                                        </tr>
                                    </thead>
                                    <tbody>
<?php
  $count_rows = 0;
  $sql_select = mysql_query("SELECT * FROM log_acceso WHERE Jugador LIKE '%".$_SESSION['USER:NAME']."%' ORDER BY Fecha DESC LIMIT 0, 20 ");
  while($logacc = mysql_fetch_array($sql_select))
  {
    $count_rows++;
?>
                                        <tr>
                                            <td><center><p style="font-size:13px"><?php echo $logacc['Fecha']; ?></center></td>
                                            <td><center><p style="font-size:13px">IMG bandera</center></td>
                                            <td><center><p style="font-size:13px">País</center></td>
											<td><center><p style="font-size:13px"><?php echo $logacc['IP']; ?></center></td>
											</td>
                                        </tr>
<?php
  }
  if($count_rows == 0)
  {
?>
							<div class="alert alert-danger">
                                <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
                                <img src="/imagenes/iconos/error.png" /> No se ha registrado ning&uacuten acceso reciente a tu cuenta.
                            </div>
<?php
  }
?>
                                    </tbody>
                                </table>
                            </div>
							</div>
							</div>
                        </div>
                        </div>

Adjunto, las tengo almacenadas en /imagenes/banderas/16/X.png.Adjunto, las tengo almacenadas en /imagenes/banderas/16/X.png.

n9unLKC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de txema

Obtener PAÍS a través de IP y demás info (PHP)

Publicado por txema (41 intervenciones) el 13/08/2015 08:16:44
Mike:

xve te mostraba los datos sobre ip2location

Por mi parte publicaba sobre la base de datos GeoLite (GeoIP2) de MaxMind en códigos fuente, bajo licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 Unported.

Ver IP Geolocation

Hoy lo he ampliado con el Código País y el Código Continente.
Desde ahí podrás sacar las condicionales para mostrar las banderas de cada país.

Para localizar el host puedes utilizar:
1
2
3
<?php
echo gethostbyaddr($_SERVER['REMOTE_ADDR']);
?>

Comentanos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mike

Obtener PAÍS a través de IP y demás info (PHP)

Publicado por Mike (54 intervenciones) el 13/08/2015 21:59:19
Hola txema, gracias por tu respuesta. He estado re-leyendo los links que ambos me pasaron pero lo veo un poco, no sé si complicado, lioso, ¿hay que pagar para conseguir esas bases de datos verdad? No entiendo muy bien cómo va. Gracias por la paciencia y disculpen que nunca intenté meterme con esto de captar las IP's y localizaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Obtener PAÍS a través de IP y demás info (PHP)

Publicado por txema (41 intervenciones) el 13/08/2015 22:12:14
Mike:

En la base de datos que te pasaba yo, es libre, con la necesaria referencia a la fuente de datos de la que se obtiene. Esto es, incluir un enlace parecido a esto (hasta Google Maps lo hace en el pié de los mapas que desarrollamos con su API):
1
2
Este producto incluye datos GeoLite creados por MaxMind, disponibles en
  <a href="http://www.maxmind.com"> http://www.maxmind.com </a>.

La implementación es tan sencilla como esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$meta = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$IP));
 
      IP: <span style="color:#FF00AA;"><?php echo $IP; ?></span>
      <br>
      Latitud: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_latitude']; ?></span>
	  <input id="lat" type="hidden" value="<?php echo $meta['geoplugin_latitude']; ?>">
      <br>
      Longitud: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_longitude']; ?></span>
	  <input id="lng" type="hidden" value="<?php echo $meta['geoplugin_longitude']; ?>">
      <br>
      Ciudad: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_city']; ?></span>
      <br>
      Región: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_region']; ?></span>
      <br>
      País: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_countryName']; ?></span>
      <br>
      Código País: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_countryCode']; ?></span>
      <br>
      Código Continente: <span style="color:#FF00AA;"><?php echo $meta['geoplugin_continentCode']; ?></span>

La obtención de la IP la tienes en mi código más arriba y nos decías que ya la obtenías.

P.D.: La referencia de xve sobre ip2location meree todos mis respetos, si bien, como casi todas, tienen sus servicios "premiún.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener PAÍS a través de IP y demás info (PHP)

Publicado por Emanuel eduardo.grashof@hotmail.com (1 intervención) el 01/12/2016 06:56:03
Yo intenté con este código, necesito ayuda, tengo un server de 000webhostapp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
error_reporting(0);//si algo sale mal que nadie vea los errores 
// registra la ip original y otros datos 
function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
 
date_default_timezone_set('America/Argentina/Buenos_Aires');//seteo para que me de la fecha de mi pais 
$fecha = date("d M Y H:i:s" ) ;
$refer = $_SERVER['HTTP_REFERER'];
$consulta = $_SERVER['QUERY_STRING'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$ruri = $_SERVER['REQUEST_URI'];
 
$fh=fopen("visitas.txt","a+" ) ;// a+ hago un append para no machacar datos 
$ip=getRealIpAddr();
fputs($fh,"$fecha|$ip|$refer|$consulta|$browser|$ruri\n" ) ;
fclose($fh);
 
?>
pero no me tira el ip en el .txt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar