Este paquete proporciona una biblioteca PHP que determina el país de una dirección IP.
Puede instalar fácilmente PHP Geolocation con el compositor.
composer require divineomega/php-geolocation
El uso más simple de la geolocalización de PHP es crear un nuevo objeto de localización y llamar a su método getCountryByIP .
// Get country of the current request's IP address
$ country = ( new Locator )-> getCountryByIP ( $ _SERVER [ ' REMOTE_ADDR ' ]);
// Get country of a specific IP address
$ country = ( new Locator )-> getCountryByIP ( ' 93.184.216.34 ' );
// Returns a Country object
/*
object(DivineOmegaCountriesCountry)#4693 (16) {
["name"]=>
string(13) "United States"
["officialName"]=>
string(24) "United States of America"
// etc...
}
*/ Puede configurar PHP Geolocation para usar cualquier biblioteca de almacenamiento en caché que cumpla con PSR-6. Esto se hace fácilmente utilizando el método setCache .
El siguiente ejemplo configura un caché de archivo (proporcionado por el paquete cache/filesystem-adapter ).
use League Flysystem Adapter Local ;
use League Flysystem Filesystem ;
use Cache Adapter Filesystem FilesystemCachePool ;
$ filesystemAdapter = new Local ( __DIR__ . ' / ' );
$ filesystem = new Filesystem ( $ filesystemAdapter );
$ cachePool = new FilesystemCachePool ( $ filesystem );
$ locator = new Locator ;
$ locator -> setCache ( $ cachePool );
$ country = $ locator -> getCountryByIP ( ' 93.184.216.34 ' ); De forma predeterminada, PHP Geolocation intentará usar el comando whois nativo del sistema operativo para determinar la dirección IP. Si lo desea, puede usar un proveedor de ubicación alternativo. Esto se puede hacer utilizando el método setLocationProvider , como sigue.
$ locator = new Locator ;
$ locator -> setLocationProvider ( new IpStack ( ' my_ip_stack_api_key ' );
$ country = $ locator -> getCountryByIP ( ' 93.184.216.34 ' );Para obtener una clave API gratuita, registre en el sitio web de IP Stack.
Si desea desarrollar su propio proveedor de ubicación, simplemente cree una nueva clase que implementa la LocationProviderInterface proporcionada en este paquete. Consulte las clases de proveedores de ubicación existentes WhoIs y FreeGeoIP si necesita ayuda para crear su propio proveedor de ubicación.