GEOIP SCRIPT 转发部分不工作
Posted
技术标签:
【中文标题】GEOIP SCRIPT 转发部分不工作【英文标题】:GEOIP SCRIPT Forwarding Part not working 【发布时间】:2014-02-05 19:56:46 【问题描述】:我有一个很小的脚本,但其中有错误,希望有人能花 2 分钟时间轻松修复。
我在做什么...我有网站,称之为 website.com。主页上有链接。链接将把人带到 website.com/link
website.com/link 页面是脚本。脚本是使用 geoip 来确定人是来自美国、英国还是其他国家。
我想要它做的是将来自美国的人转发到 URL1,如果他们来自英格兰,将人转发到 URL2,或者如果他们来自其他任何地方,将人转发到 URL3。
脚本中不工作的部分是转发部分。我知道 GEOIP 脚本部分可以正常工作,因为我使用 IMAGE1、IMAGE2 和 IMAGE3 对其进行了测试,并且工作正常。所以问题是更改脚本,以便将人员转发到另一个 URL。
这是脚本。
<?php
require_once(ABSPATH.'geoip.inc');
$gi = geoip_open(ABSPATH.'GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
if($country=='US')
echo '<?php
header( 'Location: http://www.google.com'; ) ;
?>';
elseif($country=='GB')
echo '<?php
header( 'Location: http://www.bing.com'; ) ;
?>';
else
echo '<?php
header( 'Location: http://www.yahoo.com'; ) ;
?>';
?>
【问题讨论】:
echo '<?php
- 这是什么?!
【参考方案1】:
也许这足以重定向:
<?php
require_once(ABSPATH.'geoip.inc');
$gi = geoip_open(ABSPATH.'GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
if ($country=='US')
header('Location: http://www.google.com');
elseif ($country=='GB')
header('Location: http://www.bing.com');
else
header('Location: http://www.yahoo.com');
?>
【讨论】:
1.什么返回print_r($country)
? 2.你看到任何错误吗? 3.在这部分之前你有任何输出吗,例如echo
?【参考方案2】:
让我们添加 exit()。
<?php
require_once(ABSPATH.'geoip.inc');
$gi = geoip_open(ABSPATH.'GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
if ($country=='US')
header('Location: http://www.google.com');
exit();
elseif ($country=='GB')
header('Location: http://www.bing.com');
exit();
else
header('Location: http://www.yahoo.com');
?>
【讨论】:
以上是关于GEOIP SCRIPT 转发部分不工作的主要内容,如果未能解决你的问题,请参考以下文章
尝试更新 geoip 得到错误 -21 - 它一直在工作直到最近