Задать вопрос
racheer
@racheer

Как определить местоположение юзера?

Работаю над одним из первых приложений на python, одна из функций - вывод данных о погоде в городе пользователя. Не смог найти подходящий модуль, способный определить геолокацию, возможно ли такое реализовать?
  • Вопрос задан
  • 420 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Получай ip юзера, по нему узнавай локацию
Ответ написан
delvin-fil
@delvin-fil
Crazy Linux-admin
Вообще, как я уже комментировал выше, везде присутствует запрос
'HTTP_X_REAL_IP'
или
'HTTP_CLIENT_IP'
Вот здесь довольно неплохо изложено.
С одним "но" - MongoDB.
Я думаю, если покопаться в справочниках(а они есть и на русском), то можно сие переписать под ДБ предоставляемым хостером.
Да в конце концов, можно и в, скажем, CSV это все гнать.

Но проще всего на стороне сервера запустить что-то такое:
<?php
$file="stat.log";    // файл для записи истории посещения сайта
$col_zap=500;    // ограничиваем количество строк log-файла 

function getRealIpAddr() {
  if (!empty($_SERVER['HTTP_CLIENT_IP']))        // Определяем IP
  { $ip=$_SERVER['HTTP_CLIENT_IP']; }
  elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
  { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
  else { $ip=$_SERVER['REMOTE_ADDR']; }
  return $ip;
}

if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')) {$bot='YandexBot';} //Выявляем поисковых ботов
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) {$bot='Googlebot';}
else { $bot=$_SERVER['HTTP_USER_AGENT']; }

$ip = getRealIpAddr();
$date = date("H:i:s d.m.Y");        // определяем дату и время события
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];    // определяем страницу сайта
$lines = file($file);
while(count($lines) > $col_zap) array_shift($lines);
$lines[] = $date."|".$bot."|".$ip."|".$home."|\r\n";
file_put_contents($file, $lines);
?>

На выходе получаем подобное этому:
5dbecd91ba7f8708290260.png
Останется только распарсить log-файл(модулей для python полно)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы