如何使用getCountryFromIP PHP函数来了解用户的位置并基于它显示按钮?
Posted
技术标签:
【中文标题】如何使用getCountryFromIP PHP函数来了解用户的位置并基于它显示按钮?【英文标题】:how to use getCountryFromIP PHP function to know users location and display button based on it? 【发布时间】:2016-09-27 10:23:20 【问题描述】:我有一个 php 函数
<?php
function getCountryFromIP($ip, $type = "code")
$details = json_decode(file_get_contents("http://ipinfo.io/$ip"));
$details = get_object_vars($details);
$country = $details["country"];
return $country;
?>
现在我想使用此功能获取用户位置,并根据该位置显示一个特定按钮,该按钮将根据用户的位置将用户带到相应的 PDF。
在我的 html 中有这个,
<div class="locbuttons">
<a class="btn btn-large trial-button" href="/ebooks/EUConsultantsPack.pdf" target="_blank"><button>Consultant's Pack</button></a>
<a class="btn btn-large trial-button" href="/ebooks/USConsultantsPack.pdf" target="_blank"><button>Consultant's Pack</button></a>
</div>
【问题讨论】:
blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php 。现在将此 ip 传递给您的函数并获取国家/地区名称并根据该使用条件显示特定按钮 那么有什么问题,假设 HTML 是由一些 PHP 代码构建的,替换href="/ebooks/USConsultantsPack.pdf"
中的 2 个字符国家代码应该很简单。当然EU
不匹配国家代码或一种特定语言,但我认为这只是示例代码
【参考方案1】:
这假设你的功能是让国家运作..
您可能必须使用数组并将国家(在您的数组中)与电子书相匹配。
<?php
$dataArray = array(
array("Country" =>"United Kingdom", "pdf" => "/ebooks/EUConsultantsPack.pdf"),
array("Country" => "Germany", "pdf" => "/ebooks/EUConsultantsPack.pdf"),
array("Country" => "United States of America", "pdf" => "/ebooks/USConsultantsPack.pdf")
);
?>
然后,一旦你调用你的函数并检索用户国家......
<?php
$country = getCountryFromIP($ip);
foreach($dataArray as $dA)
if ($country == $dA['Country'])
//if the country matches our array, we can print out the correct button
echo '<a class="btn btn-large trial-button" href="'.$dA['pdf'].'" target="_blank"><button>Consultant\'s Pack</button></a>';
?>
【讨论】:
略过杀。他需要/想要做的就是替换href
中的2 个字符的国家/地区代码。此外,由于该函数返回 2 个字符的国家/地区代码,因此您的数组对 OP 没有多大用处
@RiggsFolly 他用来查询 IP 地址的页面没有输出他需要的“欧洲”的 2 字符国家代码
正确,但是欧洲也不会说一种语言,所以我不得不假设这只是一个经过深思熟虑的例子
我同意你的说法,但我必须假设他有一本面向整个欧洲的电子书(举个例子)。
所以我们都在假设。哎哟!我们俩都养成了一个危险的习惯。但无论如何,您的数组不会将 GB
、FR
、IT
等转换为任何东西,而这些是该函数返回的 country
代码格式以上是关于如何使用getCountryFromIP PHP函数来了解用户的位置并基于它显示按钮?的主要内容,如果未能解决你的问题,请参考以下文章