Dimon789 Posted October 25, 2014 Report Share Posted October 25, 2014 Подскажите что не так делаю, вот код определения города, вставляю его в файле 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, но выводит город Quote Link to post Share on other sites
Kors Posted October 26, 2014 Report Share Posted October 26, 2014 Значение {$city} не определено. Видимо, причина в том, что $this->design->assign('city', $city); не срабатывает, так как стоит после return $city; Quote Link to post Share on other sites
koteyka Posted October 26, 2014 Report Share Posted October 26, 2014 А обращение к функции внутри самой функции - это разве правильно? $city = trim(get_city()); Тут скорее закрывающая скобка должна стоять после return $city; Quote Link to post Share on other sites
koteyka Posted October 26, 2014 Report Share Posted October 26, 2014 Не срабатывает функция. IP определяет, а город не возвращает. Может запрос не срабатывает. Quote Link to post Share on other sites
Kors Posted October 26, 2014 Report Share Posted October 26, 2014 А обращение к функции внутри самой функции - это разве правильно?http://www.php.su/articles/?cat=examples&page=019 Quote Link to post Share on other sites
koteyka Posted October 26, 2014 Report Share Posted October 26, 2014 http://www.php.su/ar...amples&page=019 Спасибо. У меня как раз этот сайт открыт, но до этой статьи еще не добрался. Теперь понятно, хотя и странно.Но запрос всё равно не срабатывает. Quote Link to post Share on other sites
insider Posted October 26, 2014 Report Share Posted October 26, 2014 Небольшой мануал по геолокации через Yandex API Quote Link to post Share on other sites
Dimon789 Posted October 26, 2014 Author Report Share Posted October 26, 2014 Небольшой мануал по геолокации через Yandex APIдумаю подходящий вариант, как раз искал ) Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.