crx349 发表于 2018-6-10 17:08:11

通过IP获取用户所在区域

实现有ip或者用户区域,使用的是淘宝接口,速度非常快,同时API输出跨域问题完美解决。

代码如下:
<?php
/**
* 获取ip 接口
* @access public 以淘宝的接口为实例
*/
function get_ip_info($ip) {
    $curl = curl_init(); //这是curl的handle
    //下面是设置curl参数
    $url = "http://ip.taobao.com/service/getIpInfo.php?ip=$ip";
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl, CURLOPT_HEADER, 0); //don't show header
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //相当关键,这句话是让curl_exec($ch)返回的结果可以进行赋值给其他的变量进行,json的数据操作,如果没有这句话,则curl返回的数据不可以进行人为的去操作(如json_decode等格式操作)
    curl_setopt($curl, CURLOPT_TIMEOUT, 2);
    //这个就是超时时间了
    $data = curl_exec($curl);
   // return json_decode($data, true);
    return $data;
}

/**
* 对内容进行安全处理
* @param string|array $string 要处理的字符串或者数组
* @param $string $flags 指定标记
*/
function dhtmlspecialchars($string, $flags = null) {
    if(is_array($string)) {
      foreach($string as $key => $val) {
            $string[$key] = dhtmlspecialchars($val, $flags);
      }
    } else {
      if($flags === null) {
            $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
            if(strpos($string, '&#') !== false) {
                $string = preg_replace('/&((#(\d{3,5}|x{4}));)/', '&\\1', $string);
            }
      } else {
            if(PHP_VERSION < '5.4.0') {
                $string = htmlspecialchars($string, $flags);
            } else {
                if(strtolower(CHARSET) == 'utf-8') {
                  $charset = 'UTF-8';
                } else {
                  $charset = 'ISO-8859-1';
                }
                $string = htmlspecialchars($string, $flags, $charset);
            }
      }
    }
    return $string;
}

$ip = dhtmlspecialchars($_GET['ip']);
header("Access-Control-Allow-Origin:*");
Header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT');
echo get_ip_info($ip);


crx349 发表于 2018-6-10 19:58:34


高级例子:JS直接嵌套使用
**** Hidden Message *****
页: [1]
查看完整版本: 通过IP获取用户所在区域