Мой php-код для определения местоположения пользователей с базой данных GeoLite City работает только частично.Может кто-нибудь взглянуть? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть простой 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>';
}
?>

1 Ответ

0 голосов
/ 23 октября 2018

Попробуйте изменить ...

if(in_array( $jg_user_location, $jg_event_locations, TRUE )!==FALSE) {...

на это (убрать лишний знак равенства) ...

if(in_array( $jg_user_location, $jg_event_locations, TRUE )!=FALSE) {...
...