我有简单的php代码,可以在某些地理位置(美国地区)展示广告,并且它适用于某些州,但不适用于其他州。谁能看一下我的代码并发现错误?
下面的这段代码是我用来尝试从访问者那里获得美国所在州的位置,并向他们展示来自这些州的特殊广告的方法。这是在nginx服务器上,主机已经为缓存设置了单独的存储桶,因此某些美国州(以下标识的州)将具有不同的缓存。我已经清除了服务器缓存。中西部位置有效(田纳西州和肯塔基州),但东海岸位置无效(DC)。任何人都可以在我的php上给出任何提示吗?我会很感激。该数据库是MaxMind GeoLite City数据库,因此应该提供地区/美国状态数据。
Wordpress框架为beans,并使用“ beans智能操作”。
<?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>';
}
?>
答案 0 :(得分:0)
尝试更改...
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!==FALSE) {...
对此(删除多余的等号)...
if(in_array( $jg_user_location, $jg_event_locations, TRUE )!=FALSE) {...