Quiero que los visitantes ingresen al país a través de su IP ... En este momento estoy usando esto ( http://api.hostip.info/country.php?ip= ......)
Aquí está mi código:
<?php
if (isset($_SERVER['HTTP_CLIENT_IP']))
{
$real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$real_ip_adress = $_SERVER['REMOTE_ADDR'];
}
$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);
?>
Bueno, está funcionando correctamente, pero la cuestión es que esto devuelve el código del país como EE. UU. O CA., y no el nombre completo del país, como Estados Unidos o Canadá.
Entonces, ¿hay alguna buena alternativa para que hostip.info ofrezca esto?
Sé que puedo escribir un código que eventualmente convertirá estas dos letras en el nombre completo del país, pero soy demasiado vago para escribir un código que contenga todos los países ...
PD: Por alguna razón, no quiero usar ningún archivo CSV listo o ningún código que pueda obtener esta información para mí, algo como el código IP2country y CSV.
fuente
$real_ip_address
siempre se ignora. De todos modos, recuerde que elX-Forwarded-For
encabezado HTTP se puede falsificar de manera extremadamente fácil, y que hay servidores proxy como www.hidemyass.comhttps://www.iplocate.io/api/lookup/8.8.8.8
- Descargo de responsabilidad: ejecuto este servicio.Respuestas:
Prueba esta sencilla función PHP.
Cómo utilizar:
Ejemplo 1: Obtener detalles de la dirección IP del visitante
Ejemplo 2: Obtenga detalles de cualquier dirección IP. [Soporte IPV4 e IPV6]
fuente
file_get_contents()
. Simplemente revise su archivo error_log. Solución alternativa: vea mi respuesta.Puede usar una API simple desde http://www.geoplugin.net/
Función utilizada
Salida
Te hace tener tantas opciones con las que puedes jugar
Gracias
:)
fuente
Intenté la respuesta de Chandra pero la configuración de mi servidor no permite file_get_contents ()
PHP Warning: file_get_contents() URL file-access is disabled in the server configuration
Modifiqué el código de Chandra para que también funcione para servidores como ese usando cURL:
Espero que ayude ;-)
fuente
En realidad, puede llamar a http://api.hostip.info/?ip=123.125.114.144 para obtener la información, que se presenta en XML.
fuente
Use MaxMind GeoIP (o GeoIPLite si no está listo para pagar).
fuente
Use los siguientes servicios
1) http://api.hostip.info/get_html.php?ip=12.215.42.19
2)
3) http://ipinfodb.com/ip_location_api.php
fuente
Echa un vistazo a php-ip-2-country desde code.google. La base de datos que proporcionan se actualiza a diario, por lo que no es necesario conectarse a un servidor externo para verificar si aloja su propio servidor SQL. Entonces, usando el código, solo tendría que escribir:
Código de ejemplo (del recurso)
Salida
fuente
Podemos usar geobytes.com para obtener la ubicación usando la dirección IP del usuario
devolverá datos como este
Función para obtener la IP del usuario
fuente
Pruebe este código simple de una línea. Obtendrá el país y la ciudad de los visitantes desde su dirección remota IP.
fuente
Puede utilizar un servicio web de http://ip-api.com
en su código php, haga lo siguiente:
la consulta tiene muchas otras informaciones:
fuente
Existe una versión de archivo plano bien mantenida de la base de datos ip-> country mantenida por la comunidad Perl en CPAN
El acceso a esos archivos no requiere un servidor de datos, y los datos en sí son aproximadamente 515k
Higemaru ha escrito un contenedor PHP para hablar con esos datos: php-ip-country-fast
fuente
Muchas formas diferentes de hacerlo ...
Solución # 1:
Un servicio de terceros que podría utilizar es http://ipinfodb.com . Proporcionan nombre de host, geolocalización e información adicional.
Regístrese para obtener una clave API aquí: http://ipinfodb.com/register.php . Esto le permitirá recuperar resultados de su servidor, sin esto no funcionará.
Copie y pegue el siguiente código PHP:
Abajo:
Citando desde su sitio web:
Solución # 2:
Esta función devolverá el nombre del país utilizando el servicio http://www.netip.de/ .
Salida:
fuente
¡Mi servicio ipdata.co proporciona el nombre del país en 5 idiomas! Además de la organización, la moneda, la zona horaria, el código de llamada, la bandera, los datos del operador de telefonía móvil, los datos de proxy y los datos de estado del nodo de salida Tor de cualquier dirección IPv4 o IPv6.
¡También es extremadamente escalable con 10 regiones en todo el mundo, cada una capaz de manejar> 10,000 solicitudes por segundo!
Las opciones incluyen; Inglés (en), alemán (de), japonés (ja), francés (fr) y chino simplificado (za-CH)
fuente
No estoy seguro si este es un servicio nuevo, pero ahora (2016) la forma más fácil en php es usar el servicio web php de geoplugin: http://www.geoplugin.net/php.gp :
Uso básico:
También proporcionan una clase preparada: http://www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache
fuente
else
afterelse
que causa un error. ¿Qué trataste de prevenir? ¿REMOTE_ADDR debería estar disponible todo el tiempo?$_SERVER
: "No hay garantía de que cada servidor web proporcione ninguno de estos; los servidores pueden omitir algunos o proporcionar otros que no figuran aquí".Estoy usando
ipinfodb.com
api y obtengo exactamente lo que estás buscando.Es completamente gratis, solo necesita registrarse con ellos para obtener su clave de API. Puede incluir su clase de PHP descargándola de su sitio web o puede usar el formato de URL para recuperar información.
Esto es lo que estoy haciendo:
Incluí su clase php en mi script y usé el siguiente código:
Eso es.
fuente
puede usar http://ipinfo.io/ para obtener detalles de la dirección IP. Es fácil de usar.
fuente
Reemplazar
127.0.0.1
con visitantes IpAddress.Las instrucciones de instalación están aquí , y lea esto para saber cómo obtener Ciudad, Estado, País, Longitud, Latitud, etc.
fuente
Una línea con una dirección IP para la API del país
Ejemplo:
https://ipapi.co/country_name/ - tu país
https://ipapi.co/8.8.8.8/country_name/ - país para IP 8.8.8.8
fuente
Tengo una respuesta corta que he usado en un proyecto. En mi respuesta, considero que tiene una dirección IP de visitante.
fuente
Sé que esto es antiguo, pero probé algunas otras soluciones aquí y parecen estar desactualizadas o simplemente devuelven nulo. Así es como lo hice.
Uso
http://www.geoplugin.net/json.gp?ip=
que no requiere ningún tipo de registro o pago por el servicio.Y si desea información adicional al respecto, este es un retorno completo de Json:
fuente
He escrito una clase basada en la respuesta "Chandra Nakka". Con suerte, puede ayudar a las personas a guardar la información del geoplugin en una sesión para que la carga sea mucho más rápida al recuperar la información. También guarda los valores en una matriz privada, por lo que recuperarlos en el mismo código es lo más rápido posible.
Respondiendo la pregunta 'op' con esta clase puedes llamar
Y las otras propiedades disponibles son:
Volviendo
fuente
La API del país del usuario tiene exactamente lo que necesita. Aquí hay un código de muestra usando file_get_contents () como lo hace originalmente:
fuente
Puede obtener visitantes país y ciudad utilizando ipstack geo API. Necesita obtener su propia API de ipstack y luego usar el siguiente código:
Fuente: Obtenga visitantes país y ciudad en PHP usando la API de ipstack
fuente
Esta es solo una nota de seguridad sobre la funcionalidad de
get_client_ip()
que la mayoría de las respuestas aquí se han incluido dentro de la función principal deget_geo_info_for_this_ip()
.No confíe demasiado en los datos IP en los encabezados de la solicitud como
Client-IP
oX-Forwarded-For
porque pueden ser falseadas muy fácilmente, sin embargo, debe contar con la IP de origen de la conexión TCP que realmente se establece entre nuestro servidor y el cliente$_SERVER['REMOTE_ADDR']
como se puede' ser engañadoEstá bien obtener el país de la IP falsificada, pero tenga en cuenta que usar esta IP en cualquier modelo de seguridad (por ejemplo: prohibir la IP que envía solicitudes frecuentes) destruirá todo el modelo de seguridad. En mi humilde opinión, prefiero usar la IP del cliente real, incluso si es la IP del servidor proxy.
fuente
Tratar
fuente
Puede usar mi servicio: https://SmartIP.io , que proporciona nombres completos de países y ciudades de cualquier dirección IP. También exponemos zonas horarias, moneda, detección de proxy, detección de nodos TOR y detección de criptografía.
Solo necesita registrarse y obtener una clave API gratuita que permite 250,000 solicitudes por mes.
Usando la biblioteca oficial de PHP, la llamada API se convierte en:
Consulte la documentación de la API para obtener más información: https://smartip.io/docs
fuente
A partir de 2019, MaxMind country DB se puede usar de la siguiente manera:
Fuente: https://github.com/maxmind/MaxMind-DB-Reader-php
fuente
¿Sería eso aceptable? PHP puro
ref: https://www.php.net/manual/en/function.geoip-country-code-by-name.php
fuente