ubicacion solicitar por pais obtener geolocation dreamhost whois

geolocation - solicitar - Obtener la ubicación del país de una IP con PHP nativo



php ip location (8)

Sigue leyendo antes de decir que esto es un duplicado, no lo es. (por lo que pude ver)

Quiero obtener el código del condado en PHP del cliente.

Sí, sé que puedes hacerlo usando sitios externos o con "me gusta" geoip_record_by_name "pero no quiero depender de un sitio externo, y no puedo instalar" pear "para php como estoy usando Shard Dreamhost hosting.

Pensé que podía hacer algo como esto:

$output = shell_exec(''whois ''.$ip.'' -H | grep country | awk /'{print $2}/'''); echo "<pre>$output</pre>";

Pero Dreamhost parece tener una versión antigua de whois (4.7.5), por lo que recibo este error en la asignación de IPs:

Unknown AS number or IP network. Please upgrade this program.

Entonces, a menos que alguien sepa cómo obtener un binario de una versión más reciente de whois en Dreamhost, me quedo atascado.

¿O hay otra manera de obtener el código de país del cliente que está cargando la página?


¿Puede simplemente instalar una copia de whois en su directorio de inicio y pasar la ruta completa a shell_exec? De esa manera usted no está obligado a su calendario de actualización.



Aquí hay un sitio con un script que acabo de usar. El único problema es que es probable que de vez en cuando necesites regenerar las IP por ti mismo ... lo que podría ser una molestia y por qué todo el mundo te está diciendo que uses API externa. Pero para mí, esa no fue la solución, ya que obtuve como 50 IPs a la vez, lo que significa que probablemente me prohibirían. Así que la solución fue usar mi propio script o hacer guardados en la base de datos, pero nuevamente estaba extrayendo imágenes de sitios externos. De todos modos aquí está el script en el que encontré:

http://coding-talk.com/f29/country-flag-script-8882/



Considere ipcountryphp (mi sitio, mi código, mi honor), ya que proporciona una base de datos local de Internet actualizada de forma gratuita. Es rápido y completamente autónomo, se puede conectar a cualquier PHP 5.3, SQLite3 y más. Búsqueda muy rápida y sin penalizaciones de rendimiento.

Basta con la auto-promoción descarada, seamos serios:

Confiar en la consulta de servicios remotos en tiempo real para obtener el país visitante puede convertirse en un importante cuello de botella para la funcionalidad de su sitio, dependiendo de la velocidad de respuesta del servidor consultado. Como regla general, nunca debe consultar servicios externos para la funcionalidad del sitio en tiempo real (como la carga de páginas) . El uso de API en segundo plano es genial, pero cuando necesita consultar el país de cada visitante antes de que se muestre la página, se abre un mundo de dolor. Y ten en cuenta que no eres el único que abusa de los servicios gratuitos :)

Por lo tanto, las consultas a los servicios de terceros se mantienen en segundo plano, mientras que solo las funciones locales que no dependen de terceros entran en las capas con las que interactúan los usuarios. Sólo mi rendimiento paranoico ligeramente asumir esto :)

PS : El script mencionado anteriormente que escribí también tiene soporte para IPv6.


MaxMind proporciona una clase gratuita de búsqueda de país GeoIP de PHP (también hay una búsqueda de país + ciudad gratis).

El bit que desea es lo que se menciona en "Módulo PHP puro". Esto no requiere que instale nada, ni dependa de ellos, ni necesita que se instale ningún módulo especial de PHP. Simplemente guarde el archivo de datos GeoIP en algún lugar, luego use la clase proporcionada para interactuar con él.


Una solución alternativa, algo extrema a su problema sería:

  1. Descargue la versión en formato CSV de la base de datos de país de MaxMind
  2. Elimine la información que no necesita del CSV con un script y ...
  3. ... generar un archivo PHP estándar que contenga una estructura de datos que contenga la dirección IP como clave y el código de país como valor.
  4. Incluya el archivo resultante en sus archivos de proyecto habituales y ahora tiene una tabla de búsqueda de códigos de país IP => completamente interna.

La desventaja es que, regularmente, necesitará regenerar el archivo PHP desde la última versión de la base de datos. Además, es una forma bastante desagradable de hacerlo en general y el rendimiento podría no ser el mejor :)


Whois es solo un cliente para el servicio de whois, por lo que técnicamente todavía está confiando en un sitio externo. Para las consultas que fallan, puedes intentar recurrir a otro sitio para la consulta, como hostip.info, que tiene una API decente y parece amigable:

http://api.hostip.info/country.php?ip=4.2.2.2

devoluciones

US

Buena suerte,

--jed

EDITAR: @Mint Aquí está el enlace a la API en hostip.info: http://www.hostip.info/use.html