获取php返回值并将其用于if语句

时间:2013-08-29 15:07:07

标签: php

我正在制作一个移动网站,并希望在用户从特定国家/地区访问我的网站时加载特定脚本

例如:

来自国家/地区的用户 - >加载脚本

来自其他国家/地区的用户 - >加载B脚本

在互联网上搜索后,最简单的方法是使用Hostip服务

http://api.hostip.info/country.php

因此它返回用户当前位置。

但是如何提取返回值,并在IF语句中使用它?

就像这样:

if (return value of http://api.hostip.info/country.php = US){
load script for US user;
} else {
load script for users from other countries
};

非常感谢:)

4 个答案:

答案 0 :(得分:2)

执行file_get_contents('http://api.hostip.info/country.php))肯定会返回网络服务器的国家/地区,而不是访问者的国家/地区?

我们曾经使用IP2Nation,但最近发现它不准确所以我们切换到这个:

http://dev.maxmind.com/geoip/legacy/geolite/

在我们的实例中,我们以CSV格式下载了国家/地区数据:http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip

然后我们将这些数据放入像这样的

的mysql表中
CREATE TABLE `geoip` (`ipstart` int(10) unsigned NOT NULL, `ipend` int(10) unsigned NOT NULL, `code` char(2) NOT NULL, PRIMARY KEY  (`ipstart`,`ipend`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `geoip` (`ipstart`, `ipend`, `code`) VALUES (16777216, 16777471, 'au'),
(16777472, 16778239, 'cn'),
(16778240, 16779263, 'au'), 
etc...
如果有人在代理后面,

$ _ SERVER [“REMOTE_ADDR”]并不总是返回正确的IP地址。您可以使用此功能确定访问者的真实IP地址(尽可能最好)

function get_real_ip () {
  if (!empty ($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    return $_SERVER['HTTP_X_FORWARDED_FOR'];
  } elseif (!empty ($_SERVER['HTTP_CLIENT_IP'])) {
    return $_SERVER['HTTP_CLIENT_IP'];
  }
  return !empty ($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
}

然后,您可以使用这样的PHP函数获取客户的国家/地区:

function get_country_by_ip ($ip) {
  $ip = ip2long ($ip);
  $sql = 'SELECT code FROM geoip WHERE ipstart <= ' . $ip . ' AND ipend >= ' . $ip . ' LIMIT 1';
  // Get result of mysql query and return it here
}

所以你的最终代码是:

define ('COUNTRY_CODE_US', 'us');
if (get_country_by_ip (get_real_ip () == COUNTRY_CODE_US) {
  // load script for US user;
} else {
  // load script for users from other countries
};

此解决方案的优势在于,您可以为不同国家/地区的用户执行不同的操作,而不仅仅是美国,并且您不依赖于可能失败的第三方网站/ API的调用

答案 1 :(得分:0)

放手一搏。

$country = file_get_contents('http://api.hostip.info/country.php');

if($country == 'US') {
  echo "You're in the US";
} else if ($country == 'Mexico') {
  echo "Yeah, you're in Mexico.";
}

答案 2 :(得分:0)

您可以使用file_get_contents()

if ('US' == $loc = file_get_contents('http://api.hostip.info/country.php')) {
    echo 'From US...';
} else {
    echo 'From ', $loc;
}

只是一个基本的开始。

答案 3 :(得分:0)

识别县用户 你必须知道他们的IP,然后发送IP到api
示例

<?php
$ip= $_SERVER["REMOTE_ADDR"]; //gives ip
$json=file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip); // return json ,
//example {"country_name":"UNITED STATES","country_code":"US","city":"Aurora, TX","ip":"12.215.42.19"}
// you need remember country_code

$arrayCounty=json_decode($json,TRUE); //json in array

//and then your if
if ($arrayCounty["country_code"]=="US"){
    echo("people from US");
}
else{

}

?>