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

获取php返回值并将其用于if语句,php,Php,我正在制作一个移动网站,如果用户从某个国家访问我的网站,我想加载一个特定的脚本 例如: 来自国家/地区A的用户->加载脚本 来自其他国家/地区的用户->加载B脚本 在互联网上搜索之后,最简单的方法就是使用Hostip服务 所以它返回用户的当前位置 但是如何提取返回值,并在IF语句中使用它呢 就这样, 非常感谢:试试看 $country = file_get_contents('http://api.hostip.info/country.php'); if($country == 'US')

我正在制作一个移动网站,如果用户从某个国家访问我的网站,我想加载一个特定的脚本

例如:

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

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

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

所以它返回用户的当前位置

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

就这样,

非常感谢:

试试看

$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.";
}
您可以为此使用文件\u获取\u内容:

if ('US' == $loc = file_get_contents('http://api.hostip.info/country.php')) {
    echo 'From US...';
} else {
    echo 'From ', $loc;
}
这只是一个基本的开始。

用于识别县级用户 您必须知道他们的IP,然后将IP发送到api 范例

执行file_get_contents'肯定会返回Web服务器的国家,而不是访问者的国家

我们以前使用IP2Nation,但最近发现它不准确,因此我们改为:

在我们的实例中,我们下载了CSV格式的国家数据:

然后我们将这些数据放入一个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...
$\u服务器[REMOTE\u 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
}

此解决方案的优点是,您可以为不同国家的用户(不仅仅是美国)做不同的事情,而且您不需要依赖对第三方网站/API的调用,因为这些调用可能会失败

谢谢您的详细回复。我认为这个答案应该有效。但是,由于某些限制,我无法修改mysql,所以我想尝试使用file\u get\u contentshttp://api.hostip.info/country.php?ip=.$\服务器[远程地址];以及您建议的get_real_ip函数。你认为它也会起作用吗?是的,应该可以。由于您正在调用一个外部资源,您可能希望使用==,检查file\u get\u contents的结果是否为false。如果返回false,您可以根据无法查明访问者是否在美国的事实提供额外的脚本。
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'] : '';
}
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
};