Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Подскажите что не так делаю, вот код определения города, вставляю его в файле CartView.php перед 

 

//////////////////////////////////////////
    // Основная функция
    //////////////////////////////////////////
 
	function get_city()
{   
    $ip = false;
    $city = false;
    if (isset($_COOKIE['ip']))
        $ip = $_COOKIE['ip']; // получаем ip из cookie, если задано

    if (isset($_COOKIE['city']))
        $city = get_cookie('city'); // получаем город из cookie, если задано
    
    // если в cookie задан город завершаем функцию возвратив этот город
    if ($city && !empty($city))
        return $city;

    // если нашли ip в cookie то не проверяем ip посетителя
    if (!$ip || empty($ip))
    {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '127.0.0.1' && preg_match('#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#', $_SERVER['HTTP_X_FORWARDED_FOR']))
        {
            $ipa[] = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '127.0.0.1' && preg_match('#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#', $_SERVER['HTTP_CLIENT_IP']))
        {
            $ipa[] = $_SERVER['HTTP_CLIENT_IP'];
        }
        if (isset($_SERVER['REMOTE_ADDR']) && preg_match('#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#', $_SERVER['REMOTE_ADDR']))
        {
            $ipa[] = $_SERVER['REMOTE_ADDR'];
        }
        $ip = $ipa[0];
    }

    $url = 'http://194.85.91.253:8090/geo/geo.html';
    $cl = curl_init();
    $query = '<ipquery><fields><all/></fields><ip-list><ip>' . $ip . '</ip></ip-list></ipquery>';
    curl_setopt($cl, CURLOPT_URL, $url);
    curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($cl, CURLOPT_TIMEOUT, 1);
    curl_setopt($cl, CURLOPT_POST, 1);
    curl_setopt($cl, CURLOPT_POSTFIELDS, $query);
    $result = curl_exec($cl);
    curl_close($cl);
    preg_match("|<city>(.*?)</city>|", $result, $city);
    if (isset($city[1]))
        $city = $city[1];
    else
        $city = false;

    return $city;
	
	$city = trim(get_city());
	$this->design->assign('city', $city);

}

в шаблоне cart.tpl добавляю 

{$city}
По идее должен определять город по IP, но выводит город
Ссылка на сообщение
Поделиться на другие сайты

Значение {$city} не определено.

Видимо, причина в том, что

$this->design->assign('city', $city);

не срабатывает, так как стоит после

return $city;

Ссылка на сообщение
Поделиться на другие сайты

А обращение к функции внутри самой функции - это разве правильно?

$city = trim(get_city());

Тут скорее закрывающая скобка должна стоять после return $city;

 
Ссылка на сообщение
Поделиться на другие сайты

Не срабатывает функция. IP определяет, а город не возвращает. Может запрос не срабатывает.

Ссылка на сообщение
Поделиться на другие сайты

:)  Спасибо. У меня как раз этот сайт открыт, но до этой статьи еще не добрался. Теперь понятно, хотя и странно.

Но запрос всё равно не срабатывает.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...