我有一个小网站(使用HTML,PHP和MySQL),并且希望根据访问者的国家/地区显示特定的横幅图像。每个国家都有不同的横幅图片。根据访问者的国家更改网页横幅图像
我已经搜索了Google的解决方案,并找到了相当多的API(如),允许根据IP地址返回国家。这很好,但我无法找到如何实现它的目的,使国家的图像开关...
我没有开发人员的知识。谁能帮我吗?
我有一个小网站(使用HTML,PHP和MySQL),并且希望根据访问者的国家/地区显示特定的横幅图像。每个国家都有不同的横幅图片。根据访问者的国家更改网页横幅图像
我已经搜索了Google的解决方案,并找到了相当多的API(如),允许根据IP地址返回国家。这很好,但我无法找到如何实现它的目的,使国家的图像开关...
我没有开发人员的知识。谁能帮我吗?
获取地理信息的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
[email protected]_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;
}
?>
谢谢Avinash。看起来很有趣。但我正在寻找根据这些信息显示正确图像的方法。我访问了netip.de,事实上,它返回了正确的国家。但是,如何根据该国家选择正确的形象......? – user3981693
如果你从这个功能得到正确的国家名称,那么你可以在国名的基础上显示图像。示例为基于国家的图像创建一个表格。每当有用户访问我们的页面,然后找到该用户的国家,然后从基于国家的图像表中获取数据并显示该图像。希望你明白.... –
我理解这个概念。我刚开始学习编码,所以在这一点上对我来说有点困难。必须找到捕获国家(名称或ISO代码)的方式,将其传递给查询,从基于国家的图像表中获取图像并显示该图像。 – user3981693
要完成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
}
}
嗯,我们可以但我们不会。我们在这里帮助不放弃免费代码。也许你应该尝试雇佣一名开发人员? – Daan
_“我没有开发人员的知识”_--然后去雇人。 – CBroe
你不应该制造大块的话,它会让人们回答你的问题。请注意,要创建一个新段落,您需要按[Enter]两次。一旦在编辑器中创建新行,但不会在每个人都可以看到您的帖子的实际页面上。 StackOverflow不是一个免费的编码服务,没有开发人员的知识,你将无处可去。无论如何,这个问题可能会被标记和删除/关闭,所以请去聘请开发人员为您编写代码。 – Druzion