In this tutorial, we demonstrate you on how to display visitor’s sunrise and sunset time based on their IP address using PHP programming languages and IP2Location BIN database. This tutorial uses the IP2Location module, available at https://www.ip2location.com/developers/php, to query IP information from BIN database. Free BIN databases are available for download at IP2Location LITE database.
Step 1: Download IP2Location LITE database, or download DB24 Sample BIN database, unzip the file and copy the BIN database (.bin extension) into the same directory of where you save your sample code.
Step 2: Download IP2Location PHP class module, unzip the file and copy IP2Location.php into the same directory of where you save your sample code.
Step 3: Run the below sample code.
<?php error_reporting(E_ALL); ini_set('display_errors', 1); set_time_limit(0); require_once('IP2Location.php'); // Standard lookup with no cache $loc = new \IP2Location\Database('./databases/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN', \IP2Location\Database::FILE_IO); /* Cache whole database into system memory and share among other scripts & websites WARNING: Please make sure your system have sufficient RAM to enable this feature */ //$loc = new \IP2Location\Database('./databases/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN', \IP2Location\Database::SHARED_MEMORY); /* Cache the database into memory to accelerate lookup speed WARNING: Please make sure your system have sufficient RAM to enable this feature */ //$loc = new \IP2Location\Database(ROOT . './databases/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN', \IP2Location\Database::MEMORY_CACHE); $ip = $_SERVER['REMOTE_ADDR']; //Retrieving data from database $time_zone = $loc->lookup($ip, \IP2Location\Database::TIME_ZONE); $country_code = $loc->lookup($ip, \IP2Location\Database::COUNTRY_CODE); $latitude = $loc->lookup($ip, \IP2Location\Database::LATITUDE); $longitude = $loc->lookup($ip, \IP2Location\Database::LONGITUDE); //Setting Sun's zenith value $zenith = 90+50/60; $offset = explode(':', $time_zone); date_default_timezone_set("UTC"); $date = date_create("UTC"); $sunset = date_sunset(date_timestamp_get($date), SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $offset[0]); $sunrise = date_sunrise(date_timestamp_get($date), SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $offset[0]); //Displaying output echo 'Country Code: ' . $country_code . '<br />'; echo 'Sunset Time: ' . $sunset . '<br />'; echo 'Sunrise Time: ' . $sunrise . '<br />'; echo 'Latitude: ' . $latitude . '<br />'; echo 'Longitude: ' . $longitude . '<br />'; ?>