According to ip call Sina api to get the city name and turn it into pinyin

  • 2021-01-25 07:14:42
  • OfStack

Function:

Select IP address from IP;
2. Call Sina ES5en to get the current city.
3. Convert Chinese to Pinyin and jump.


<?php
 include './pinyin.php';
// Gets the current ip
function getIp(){
  $onlineip='';
  if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
   $onlineip=getenv('HTTP_CLIENT_IP');
  } elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
   $onlineip=getenv('HTTP_X_FORWARDED_FOR');
  } elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
   $onlineip=getenv('REMOTE_ADDR');
  } elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
   $onlineip=$_SERVER['REMOTE_ADDR'];
  }
  return $onlineip;
 }
 // Access to city information api
 function getLocation($ip){
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
  $str = curl_exec($curl);
  curl_close($curl);
  return $str;
 }

 // The current ip address 
 $currentIP = getIp();

 // Through the current ip Access to information 
 $getLocation = getLocation($currentIP);
 $currentInfo = json_decode($getLocation, true); 

 // judge ip Whether or not it is valid 
 if($currentInfo['ret'] == '-1')
 {
  $currentInfo['city'] = 'unknown';
 }

 // Chinese name of the current city 
 $currentCityName = $currentInfo['city'];  
 $currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');

 // City Pinyin Polyphonic Character 
 switch($currentCityEName)
 {
  case 'zhongqing':
   $currentCityEName = 'chongqing';
  break;

  case 'shenfang':
   $currentCityEName = 'shifang';
  break;

  case 'chengdou':
   $currentCityEName = 'chengdu';
  break;

  case 'yueshan':
   $currentCityEName = 'leshan';
  break;

  case 'junxian':
   $currentCityEName = 'xunxian'; 
  break;

  case 'shamen':
   $currentCityEName = 'xiamen'; 
  break;

  case 'zhangsha':
   $currentCityEName = 'changsha'; 
  break;

  case 'weili':
   $currentCityEName = 'yuli'; 
  break;

  case 'zhaoyang':
   $currentCityEName = 'chaoyang'; 
  break;

  case 'danxian':
   $currentCityEName = 'shanxian'; 
  break;

  default:
   $currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');
  break;
 }

 // Redirect browser  
 header("Location: https://www.ofstack.com"); 
 exit;


Related articles: