欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

挪用SINA IP地址库取用户所在城市及地区 PHP版

程序员文章站 2022-04-23 15:57:46
...
借用SINA IP地址库取用户所在城市及地区 PHP版

/*$ip=real_ip();
$url='http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='.$ip;
$content=fopen_url($url);
$Exp='/country":"(.*?)","province":"(.*?)","city":"(.*?)","district":"","isp":"(.*?)","type/s';
$content=unicodeDecode( $content );
if(preg_match($Exp,$content,$matche)){
echo 'Hello,来自'.$matche[1].$matche[2].$matche[3].'的朋友.';
}elseif(preg_match('/"ret":-1,"ip":"(.*?)"/',$content,$matche)){
echo '您使用的是局域网,局域网IP为'.$matche[1];
}else{
echo '你来自火星吧。';
}*/

/**
?*
?*/
function ipFunGetCityNameById(){
??? $url='http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='.ipFunReal_ip();
??? $content=ipFunFopen_url($url);
??? $Exp='/country":"(.*?)","province":"(.*?)","city":"(.*?)","district":"","isp":"(.*?)","type/s';
??? $content=ipFunUnicodeDecode( $content );
??? if(preg_match($Exp,$content,$matche)){
??? ??? return $matche[3];
??? }else
??? ??? return "";
}
?
?
//Curl 获取网址内容
function ipFunFopen_url($url)
{
??? if (function_exists('file_get_contents')) {
??????? $file_content = @file_get_contents($url);
??? } elseif (ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))){
??????? $i = 0;
??????? while (!feof($file) && $i++ ??????????? $file_content .= strtolower(fread($file, 4096));
??????? }
??????? fclose($file);
??? } elseif (function_exists('curl_init')) {
??????? $curl_handle = curl_init();
??????? curl_setopt($curl_handle, CURLOPT_URL, $url);
??????? curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2);
??????? curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1);
??????? curl_setopt($curl_handle, CURLOPT_FAILONERROR,1);
??????? curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check');
??????? $file_content = curl_exec($curl_handle);
??????? curl_close($curl_handle);
??? } else {
??????? $file_content = '';
??? }
??? return $file_content;
}
?
function ipFunUnicodeDecode($content)
{
??? // 转换编码,将Unicode编码转换gb2312编码
??? $pattern = '/(\\\u([\w]{4}))/i';
??? preg_match_all($pattern, $content, $matches);
??? if (!empty($matches))
??? {
??????? for ($j = 0; $j ??????? {
??????????? $str = $matches[0][$j];
??????????? if (strpos($str, '\\u') === 0)
??????????? {
??????????????? $code = base_convert(substr($str, 2, 2), 16, 10);
??????????????? $code2 = base_convert(substr($str, 4), 16, 10);
?
??????????????? $c = chr($code).chr($code2);
??? ??? ??? ??? $c=mb_convert_encoding($c, "UTF-8", 'UCS-2');
??????????????? //$c = iconv('UCS-2', 'gb2312', $c);
??? ??? ??? ??? $content=str_replace($matches[0][$j],$c,$content);
??????????? }
??????????? else
??????????? {
??????????????? $content .= $str;
??????????? }
??????? }
??? }
??? return $content;
}
?
function ipFunReal_ip()
{
??? static $realip = NULL;
?
??? if ($realip !== NULL)
??? {
??????? return $realip;
??? }
?
??? if (isset($_SERVER))
??? {
??????? if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
??????? {
??????????? $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
?
??????????? /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
??????????? foreach ($arr AS $ip)
??????????? {
??????????????? $ip = trim($ip);
?
??????????????? if ($ip != 'unknown')
??????????????? {
??????????????????? $realip = $ip;
?
??????????????????? break;
??????????????? }
??????????? }
??????? }
??????? elseif (isset($_SERVER['HTTP_CLIENT_IP']))
??????? {
??????????? $realip = $_SERVER['HTTP_CLIENT_IP'];
??????? }
??????? else
??????? {
??????????? if (isset($_SERVER['REMOTE_ADDR']))
??????????? {
??????????????? $realip = $_SERVER['REMOTE_ADDR'];
??????????? }
??????????? else
??????????? {
??????????????? $realip = '0.0.0.0';
??????????? }
??????? }
??? }
??? else
??? {
??????? if (getenv('HTTP_X_FORWARDED_FOR'))
??????? {
??????????? $realip = getenv('HTTP_X_FORWARDED_FOR');
??????? }
??????? elseif (getenv('HTTP_CLIENT_IP'))
??????? {
??????????? $realip = getenv('HTTP_CLIENT_IP');
??????? }
??????? else
??????? {
??????????? $realip = getenv('REMOTE_ADDR');
??????? }
??? }
?
??? preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
??? $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
?
??? return $realip;
}

挪用SINA IP地址库取用户所在城市及地区 PHP版

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频