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

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

我已经在 Google 上搜索了解决方案,并找到了一些允许根据 IP 地址返回国家/地区的 API(例如 HostIP)。很好,但我找不到如何实现它以根据国家/地区进行图像切换...

我没有开发人员知识。谁能帮我吗?

【问题讨论】:

  • 我们可以,但我们不会。我们在这里帮助不泄露免费代码。也许您应该尝试聘请开发人员?
  • “我对开发人员一无所知”——那就去雇人吧。
  • 你不应该用大块的词,这会让人们无法回答你的问题。请注意,要创建新段落,您需要按 [Enter] 两次。一旦将在编辑器中创建一个新行,而不是在每个人都会看到您的帖子的实际页面上。 StackOverflow 不是免费的编码服务,如果没有开发人员知识,您将一事无成。无论如何,此问题可能会被标记并删除/关闭,因此请聘请开发人员为您编写代码。
  • 我正在编写自己的代码。每个人都有学习的权利。任何不想回答或帮助的人,只需传递并忽略问题。

标签: php html geolocation ip-geolocation


【解决方案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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多