根据访问者所在的国家/地区更改网页横幅图像

Posted

技术标签:

【中文标题】根据访问者所在的国家/地区更改网页横幅图像【英文标题】:Change web banner image based upon country of the visitor 【发布时间】:2016-03-31 12:13:56 【问题描述】:

我有一个小型网站(使用 htmlphpmysql),并希望根据访问者的国家/地区显示特定的横幅图像。每个国家/地区都有不同的横幅图片。

我已经在 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: (.*?)&nbsp;#i';
       $patterns["country"] = '#Country: (.*?)&nbsp;#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
    

【讨论】:

以上是关于根据访问者所在的国家/地区更改网页横幅图像的主要内容,如果未能解决你的问题,请参考以下文章

如何根据用户所在的国家/地区提供不同的 HTML 页面?

使用 IP 地址自动填写访问者所在国家/地区的表单

限制访问特定国家/地区的 PHP 网站

控制依赖于地理 IP 的 HTML 元素

如何根据地理位置显示动态图像?

根据访问者 IP 地址(国家/地区)将主网站重定向到子域