根据访问者所在的国家/地区更改网页横幅图像
Posted
技术标签:
【中文标题】根据访问者所在的国家/地区更改网页横幅图像【英文标题】:Change web banner image based upon country of the visitor 【发布时间】:2016-03-31 12:13:56 【问题描述】:我有一个小型网站(使用 html、php 和 mysql),并希望根据访问者的国家/地区显示特定的横幅图像。每个国家/地区都有不同的横幅图片。
我已经在 Google 上搜索了解决方案,并找到了一些允许根据 IP 地址返回国家/地区的 API(例如 HostIP)。很好,但我找不到如何实现它以根据国家/地区进行图像切换...
我没有开发人员知识。谁能帮我吗?
【问题讨论】:
我们可以,但我们不会。我们在这里帮助不泄露免费代码。也许您应该尝试聘请开发人员? “我对开发人员一无所知”——那就去雇人吧。 你不应该用大块的词,这会让人们无法回答你的问题。请注意,要创建新段落,您需要按 [Enter] 两次。一旦将在编辑器中创建一个新行,而不是在每个人都会看到您的帖子的实际页面上。 *** 不是免费的编码服务,如果没有开发人员知识,您将一事无成。无论如何,此问题可能会被标记并删除/关闭,因此请聘请开发人员为您编写代码。 我正在编写自己的代码。每个人都有学习的权利。任何不想回答或帮助的人,只需传递并忽略问题。 【参考方案1】:获取地理 IP 信息
请求地理 IP 服务器 (netip.de) 进行检查,返回 IP 所在的位置(主机、州、国家、城镇)。
<?php
$ip='94.219.40.96';
print_r(geoCheckIP($ip));
//Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen )
//Get an array with geoip-infodata
function geoCheckIP($ip)
//check, if the provided ip is valid
if(!filter_var($ip, FILTER_VALIDATE_IP))
throw new InvalidArgumentException("IP is not valid");
//contact ip-server
$response=@file_get_contents('http://www.netip.de/search?query='.$ip);
if (empty($response))
throw new InvalidArgumentException("Error contacting Geo-IP-Server");
//Array containing all regex-patterns necessary to extract ip-geoinfo from page
$patterns=array();
$patterns["domain"] = '#Domain: (.*?) #i';
$patterns["country"] = '#Country: (.*?) #i';
$patterns["state"] = '#State/Region: (.*?)<br#i';
$patterns["town"] = '#City: (.*?)<br#i';
//Array where results will be stored
$ipInfo=array();
//check response from ipserver for above patterns
foreach ($patterns as $key => $pattern)
//store the result in array
$ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
return $ipInfo;
?>
【讨论】:
谢谢阿维纳什。看起来很有趣。但我正在寻找基于该信息显示正确图像的方法。我访问了 netip.de,确实,它返回了正确的国家。但是如何根据该国家/地区选择正确的图像...? 如果你从这个函数中得到正确的国家名称,那么你可以根据国家名称显示图像。示例为基于国家/地区的图像创建一个表。每当任何用户访问我们的页面时,然后找到该用户的国家/地区,然后从基于国家/地区的图像表中获取数据并显示该图像。希望你能理解.... 我理解这个概念。我刚开始学习编码,所以现在对我来说有点困难。必须找到捕获国家/地区(名称或 ISO 代码)的方法,将其传递给查询,从基于国家/地区的图像表中获取图像,然后显示该图像..【参考方案2】:完成Avinash的回答,这是根据国家/地区切换图像的正确解决方案吗?
function switchImage($var)
switch ($var)
case "United states":
$source = '/images/US.png';
$class = 'myClass';
$alt = 'myAlt';
break;
case "United Kingdom":
$source = '/images/UK.png';
$class = 'myClass';
$alt = 'myAlt';
break;
.
.
.
default:
return "Default"; //default case
【讨论】:
以上是关于根据访问者所在的国家/地区更改网页横幅图像的主要内容,如果未能解决你的问题,请参考以下文章