我使用 GeoLite City 数据库识别用户位置的 php 代码仅部分有效。有人可以看一下吗?
My php code for identifying location of users with GeoLite City database is only partly working. Can someone take a look?
我有简单的 php 代码可以在某些地理位置(美国地区)展示广告,它适用于某些州,但不适用于其他州。谁能看看我的代码并找出错误?
下面的代码是我用来尝试从访问者那里获取美国各州位置并向他们展示特定广告(如果他们来自这些州)的代码。这是在 nginx 服务器上,主机已经为缓存设置了单独的存储桶,因此美国的某些州(如下所示)会有不同的缓存。我已经清除了服务器缓存。中西部位置有效(田纳西州和肯塔基州),但东海岸位置无效(DC)。谁能给我一些关于我的 php 的提示?我将不胜感激。该数据库是 MaxMind GeoLite City 数据库,因此 regions/US 状态数据应该可用。
Wordpress 框架是 beans 并使用 "beans smart action."
<?php
beans_add_smart_action('beans_content_prepend_markup', 'top_geo_home_ad', 5);
function top_geo_home_ad() {
$jg_user_location = getenv('GEOIP_REGION_NAME');
$jg_event_locations = array('Massachusetts', 'District of Columbia', 'Tennessee', 'Kentucky', 'New York', 'Maryland', 'DC', 'Delaware', 'Pennsylvania', 'Virginia');
if ($jg_user_location == 'District of Columbia' || $jg_user_location == 'New York' || $jg_user_location == 'Maryland' || $jg_user_location == 'Massachusetts' || $jg_user_location == 'Delaware' || $jg_user_location == 'Pennsylvania' || $jg_user_location == 'Virginia') {
$jg_user_location = 'DC';
} elseif ($jg_user_location == 'Kentucky') {
$jg_user_location = 'Tennessee';
}
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!==FALSE) {
beans_add_smart_action( 'beans_content_prepend_markup', 'CEO_geoad_' . $jg_user_location, 6 );
}
else {
beans_add_smart_action( 'beans_content_prepend_markup', 'jg_normal_top_ad', 6);
}
}
function CEO_geoad_DC() {
echo '<div class="ad-wrap horiz">' . do_shortcode('[aas_zone zone_id="56461"]') . '</div>';
}
function CEO_geoad_Tennessee() {
echo '<div class="ad-wrap horiz">' . do_shortcode('[aas_zone zone_id="56470"]') . '</div>';
}
function jg_normal_top_ad() {
echo '<div class="ad-wrap horiz">' . do_shortcode('[aas_zone zone_id="49497"]') . '</div>';
}
?>
尝试改变...
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!==FALSE) {...
对此(去掉多余的等号)...
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!=FALSE) {...
我有简单的 php 代码可以在某些地理位置(美国地区)展示广告,它适用于某些州,但不适用于其他州。谁能看看我的代码并找出错误?
下面的代码是我用来尝试从访问者那里获取美国各州位置并向他们展示特定广告(如果他们来自这些州)的代码。这是在 nginx 服务器上,主机已经为缓存设置了单独的存储桶,因此美国的某些州(如下所示)会有不同的缓存。我已经清除了服务器缓存。中西部位置有效(田纳西州和肯塔基州),但东海岸位置无效(DC)。谁能给我一些关于我的 php 的提示?我将不胜感激。该数据库是 MaxMind GeoLite City 数据库,因此 regions/US 状态数据应该可用。
Wordpress 框架是 beans 并使用 "beans smart action."
<?php
beans_add_smart_action('beans_content_prepend_markup', 'top_geo_home_ad', 5);
function top_geo_home_ad() {
$jg_user_location = getenv('GEOIP_REGION_NAME');
$jg_event_locations = array('Massachusetts', 'District of Columbia', 'Tennessee', 'Kentucky', 'New York', 'Maryland', 'DC', 'Delaware', 'Pennsylvania', 'Virginia');
if ($jg_user_location == 'District of Columbia' || $jg_user_location == 'New York' || $jg_user_location == 'Maryland' || $jg_user_location == 'Massachusetts' || $jg_user_location == 'Delaware' || $jg_user_location == 'Pennsylvania' || $jg_user_location == 'Virginia') {
$jg_user_location = 'DC';
} elseif ($jg_user_location == 'Kentucky') {
$jg_user_location = 'Tennessee';
}
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!==FALSE) {
beans_add_smart_action( 'beans_content_prepend_markup', 'CEO_geoad_' . $jg_user_location, 6 );
}
else {
beans_add_smart_action( 'beans_content_prepend_markup', 'jg_normal_top_ad', 6);
}
}
function CEO_geoad_DC() {
echo '<div class="ad-wrap horiz">' . do_shortcode('[aas_zone zone_id="56461"]') . '</div>';
}
function CEO_geoad_Tennessee() {
echo '<div class="ad-wrap horiz">' . do_shortcode('[aas_zone zone_id="56470"]') . '</div>';
}
function jg_normal_top_ad() {
echo '<div class="ad-wrap horiz">' . do_shortcode('[aas_zone zone_id="49497"]') . '</div>';
}
?>
尝试改变...
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!==FALSE) {...
对此(去掉多余的等号)...
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!=FALSE) {...