无限星辰工作室-客户无限互联网动力之源
标题:
通过IP获取用户所在区域
[打印本页]
作者:
crx349
时间:
2018-6-10 17:08
标题:
通过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[a-fA-F0-9]{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
高级例子:JS直接嵌套使用
欢迎光临 无限星辰工作室-客户无限互联网动力之源 (https://xmspace.net/)
Powered by Discuz! X3.4