All Projects → ipinfo → Php

ipinfo / Php

Licence: apache-2.0
Official PHP library for IPinfo (IP geolocation and other types of IP data)

Labels

Projects that are alternatives of or similar to Php

lua-resty-maxminddb
A Lua library for reading MaxMind's Geolocation database
Stars: ✭ 72 (-13.25%)
Mutual labels:  geoip
Mmdb china ip list
Geoip MaxMind Database for china ip list! This is also an example of generating MaxMind Database!
Stars: ✭ 424 (+410.84%)
Mutual labels:  geoip
Serverless Geoip
Use MaxMind GeoLite2 database with AWS Lambda
Stars: ✭ 33 (-60.24%)
Mutual labels:  geoip
Echoip
IP address lookup service
Stars: ✭ 3,274 (+3844.58%)
Mutual labels:  geoip
V2ray Rules Dat
🦄 🎃 👻 V2Ray 路由规则文件加强版,可代替 V2Ray 官方 geoip.dat 和 geosite.dat,兼容 Shadowsocks-windows、Xray-core、Trojan-Go 和 leaf。Enhanced edition of V2Ray rules dat files, compatible with Xray-core, Shadowsocks-windows, Trojan-Go and leaf.
Stars: ✭ 6,550 (+7791.57%)
Mutual labels:  geoip
Nali
An offline tool for querying IP geographic information and CDN provider.一个查询IP地理信息和CDN服务提供商的离线终端工具.
Stars: ✭ 535 (+544.58%)
Mutual labels:  geoip
country
IP to country
Stars: ✭ 32 (-61.45%)
Mutual labels:  geoip
Geoip2 Golang
Unofficial MaxMind GeoIP2 Reader for Go
Stars: ✭ 1,074 (+1193.98%)
Mutual labels:  geoip
Maxminddb Golang
MaxMind DB Reader for Go
Stars: ✭ 319 (+284.34%)
Mutual labels:  geoip
Piwik Intranetgeoip
Piwik plugin to locate all locale data of a user based on the IP address/subnetwork (country, region, city, latitude, longitude, provider, ...)
Stars: ✭ 21 (-74.7%)
Mutual labels:  geoip
Beeping
HTTP Monitoring via API - Measure the performance of your servers
Stars: ✭ 267 (+221.69%)
Mutual labels:  geoip
Crips
IP Tools To quickly get information about IP Address's, Web Pages and DNS records.
Stars: ✭ 272 (+227.71%)
Mutual labels:  geoip
Telize
High performance JSON IP and GeoIP REST API (IP Geolocation)
Stars: ✭ 774 (+832.53%)
Mutual labels:  geoip
geoip2-rs
Fast GeoIP2 Reader for Rust
Stars: ✭ 25 (-69.88%)
Mutual labels:  geoip
Postfwd Anti Geoip Spam Plugin
Postfwd plugin for blocking international spam botnets based on geographical location of IP addresses used to login to postfix via sasl.
Stars: ✭ 40 (-51.81%)
Mutual labels:  geoip
MaxMind-DB-Reader-ruby
Ruby reader for the MaxMind DB Database Format
Stars: ✭ 35 (-57.83%)
Mutual labels:  geoip
Nginx Autoinstall
Compile Nginx from source with custom modules on Debian and Ubuntu
Stars: ✭ 443 (+433.73%)
Mutual labels:  geoip
Ip2geo
Импортер ipgeo-данных в файлы, понятные для nginx geoip module, с поддержкой кодов регионов РФ.
Stars: ✭ 59 (-28.92%)
Mutual labels:  geoip
Th3inspector
Th3Inspector 🕵️ Best Tool For Information Gathering 🔎
Stars: ✭ 1,041 (+1154.22%)
Mutual labels:  geoip
Sypex geo
Sypex Geo IP database adapter for Ruby.
Stars: ✭ 10 (-87.95%)
Mutual labels:  geoip

IPinfo IPinfo PHP Client Library

This is the official PHP client library for the IPinfo.io IP address API, allowing you to lookup your own IP address, or get any of the following details for an IP:

  • IP to Geolocation data (city, region, country, postal code, latitude and longitude)
  • ASN information (ISP or network operator, associated domain name, and type, such as business, hosting or company)
  • Company details (the name and domain of the business that uses the IP address)
  • Carrier information (the name of the mobile carrier and MNC and MCC for that carrier if the IP is used exclusively for mobile traffic)

Check all the data we have for your IP address here.

Getting Started

You'll need an IPinfo API access token, which you can get by singing up for a free account at https://ipinfo.io/signup.

The free plan is limited to 50,000 requests per month, and doesn't include some of the data fields such as IP type and company data. To enable all the data fields and additional request volumes see https://ipinfo.io/pricing.

Installation

composer require ipinfo/ipinfo

Quick Start

>>>use ipinfo\ipinfo\IPinfo;

>>> $access_token = '123456789abc';
>>> $client = new IPinfo($access_token);
>>> $ip_address = '216.239.36.21';
>>> $details = $client->getDetails($ip_address);

>>> $detail->city;
Emeryville
>>> $details->loc;
37.8342,-122.2900

Installation

>>> composer require ipinfo/ipinfo

Usage

The IPinfo->getDetails() method accepts an IP address as an optional, positional argument. If no IP address is specified, the API will return data for the IP address from which it receives the request.

>>> $client = new IPinfo();
>>> $ip_address = '216.239.36.21';
>>> $details = $client->getDetails($ip_address);
>>> $detail->city;
Emeryville
>>> $details->loc;
37.8342,-122.2900

Authentication

The IPinfo library can be authenticated with your IPinfo API token, which is passed in as a positional argument. It also works without an authentication token, but in a more limited capacity.

>>> $access_token = '123456789abc';
>>> $client = new IPinfo($access_token);

Details Data

IPinfo->getDetails() will return a Details object that contains all fields listed IPinfo developer docs with a few minor additions. Properties can be accessed directly.

>>> $details->hostname;
cpe-104-175-221-247.socal.res.rr.com

Country Name

Details->country_name will return the country name, as supplied by the countries.json file. See below for instructions on changing that file for use with non-English languages. Details->country will still return country code.

>>> $details->country;
US
>>> $details->country_name;
United States

Longitude and Latitude

Details->latitude and Details->longitude will return latitude and longitude, respectively, as strings. Details->loc will still return a composite string of both values.

>>> $details->loc;
34.0293,-118.3570
>>> $details->latitude;
34.0293
>>> $details->longitude;
-118.3570

Accessing all properties

Details->all will return all details data as a dictionary.

>>> $details->all;
    {
    'asn': {  'asn': 'AS20001',
               'domain': 'twcable.com',
               'name': 'Time Warner Cable Internet LLC',
               'route': '104.172.0.0/14',
               'type': 'isp'},
    'city': 'Los Angeles',
    'company': {   'domain': 'twcable.com',
                   'name': 'Time Warner Cable Internet LLC',
                   'type': 'isp'},
    'country': 'US',
    'country_name': 'United States',
    'hostname': 'cpe-104-175-221-247.socal.res.rr.com',
    'ip': '104.175.221.247',
    'loc': '34.0293,-118.3570',
    'latitude': '34.0293',
    'longitude': '-118.3570',
    'phone': '323',
    'postal': '90016',
    'region': 'California'
    }

Caching

In-memory caching of Details data is provided by default via the sabre/cache library. LRU (least recently used) cache-invalidation functionality has been added to the default TTL (time to live). This means that values will be cached for the specified duration; if the cache's max size is reached, cache values will be invalidated as necessary, starting with the oldest cached value.

Modifying cache options

Default cache TTL and maximum size can be changed by setting values in the $settings argument array.

  • Default maximum cache size: 4096 (multiples of 2 are recommended to increase efficiency)
  • Default TTL: 24 hours (in seconds)
>>> $access_token = '123456789abc';
>>> $settings = ['cache_maxsize' => 30, 'cache_ttl' => 128];
>>> $client = new IPinfo($access_token, $settings);

Using a different cache

It's possible to use a custom cache by creating a child class of the CacheInterface class and passing this into the handler object with the cache keyword argument. FYI this is known as the Strategy Pattern.

>>> $access_token = '123456789abc';
>>> $settings = ['cache' => $my_fancy_custom_cache];
>>> $client = new IPinfo($access_token, $settings);

Overriding HTTP Client options

The IPinfo client constructor accepts a timeout key which is the request timeout in seconds.

For full flexibility, a guzzle_opts key is accepted which accepts an associative array which is described in Guzzle Request Options. Options set here will override any custom settings set by the IPinfo client internally in case of conflict, including headers.

Internationalization

When looking up an IP address, the response object includes a Details->country_name attribute which includes the country name based on American English. It is possible to return the country name in other languages by setting the countries_file keyword argument when creating the IPinfo object.

The file must be a .json file with the following structure:

{
 "BD": "Bangladesh",
 "BE": "Belgium",
 "BF": "Burkina Faso",
 "BG": "Bulgaria"
 ...
}

Other Libraries

There are official IPinfo client libraries available for many languages including PHP, Python, Go, Java, Ruby, and many popular frameworks such as Django, Rails and Laravel. There are also many third party libraries and integrations available for our API.

About IPinfo

Founded in 2013, IPinfo prides itself on being the most reliable, accurate, and in-depth source of IP address data available anywhere. We process terabytes of data to produce our custom IP geolocation, company, carrier, privacy, hosted domains and IP type data sets. Our API handles over 20 billion requests a month for 100,000 businesses and developers.

image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].