| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- $ip="";
- header('Content-Type: text/plain; charset=utf-8');
- if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
- $ip=$_SERVER['HTTP_CLIENT_IP'];
- } elseif (!empty($_SERVER['X-Real-IP'])) {
- $ip=$_SERVER['X-Real-IP'];
- } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
- } else {
- $ip=$_SERVER['REMOTE_ADDR'];
- }
- $ip=preg_replace("/^::ffff:/", "", $ip);
- /**
- * Optimized algorithm from http://www.codexworld.com
- *
- * @param float $latitudeFrom
- * @param float $longitudeFrom
- * @param float $latitudeTo
- * @param float $longitudeTo
- *
- * @return float [km]
- */
- function distance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo){
- $rad = M_PI / 180;
- $theta = $longitudeFrom - $longitudeTo;
- $dist = sin($latitudeFrom * $rad) * sin($latitudeTo * $rad) + cos($latitudeFrom * $rad) * cos($latitudeTo * $rad) * cos($theta * $rad);
- return acos($dist) / $rad * 60 * 1.853;
- }
- if(isset($_GET["isp"])){
- $isp="";
- try{
- $json = file_get_contents("https://ipinfo.io/".$ip."/json");
- $details = json_decode($json,true);
- if(array_key_exists("org",$details)) $isp.=$details["org"]; else $isp.="Unknown ISP";
- if(array_key_exists("country",$details)) $isp.=", ".$details["country"];
- $clientLoc=NULL; $serverLoc=NULL;
- if(array_key_exists("loc",$details)) $clientLoc=$details["loc"];
- if(isset($_GET["distance"])){
- if($clientLoc){
- $json = file_get_contents("https://ipinfo.io/json");
- $details = json_decode($json,true);
- if(array_key_exists("loc",$details)) $serverLoc=$details["loc"];
- if($serverLoc){
- try{
- $clientLoc=explode(",",$clientLoc);
- $serverLoc=explode(",",$serverLoc);
- $dist=distance($clientLoc[0],$clientLoc[1],$serverLoc[0],$serverLoc[1]);
- if($_GET["distance"]=="mi"){
- $dist/=1.609344;
- $dist=round($dist,-1);
- if($dist<15) $dist="<15";
- $isp.=" (".$dist." mi)";
- }else if($_GET["distance"]=="km"){
- $dist=round($dist,-1);
- if($dist<20) $dist="<20";
- $isp.=" (".$dist." km)";
- }
- }catch(Exception $e){}
- }
- }
- }
- }catch(Exception $ex){
- $isp="Unknown ISP";
- }
- echo $ip." - ".$isp;
- } else echo $ip;
- ?>
|