Как отправлять данные о местоположении в таблицу MySQL каждые x минут - PullRequest
0 голосов
/ 10 февраля 2019

Я работаю над небольшим кодом, чтобы каждые 5 минут сохранять текущие GPS-координаты пользователя в таблице mysql.На данный момент я знаком с PHP и изучаю javascript, поэтому мне нужна некоторая помощь с частью кода javascript.

Мой текущий пример кода будет получать GPS-положение пользователя каждые 5 секунд и устанавливать его как javascriptпеременная широта и долготаНа данный момент функция javascript выполняется каждые 5 секунд, но в конечном итоге будет обновляться для запуска каждые 5 минут.

Что мне нужно добавить в код для вставки переменных lat и lon в таблицу mysql при каждом вызове функции?

Вот мой текущий пример кода:

<!DOCTYPE html>
<html>
<body>

<p>Get GPS Location Every 5 seconds</p>

<p id="coordinates"></p>

<body onload="getLocation()"> 

<script>
var x = document.getElementById("coordinates");

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
	setTimeout(getLocation, 5000);
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;
}
</script>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019
            //HTML file
            <!DOCTYPE html>
            <html>
            <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
            </head>
            <body>

            <p>Get GPS Location Every 5 seconds</p>

            <p id="coordinates"></p>

            <body onload="getLocation()"> 

            <script>
            var x = document.getElementById("coordinates");

            function getLocation() {
              if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(showPosition);
                setTimeout(getLocation, 5000);
              } else { 
                x.innerHTML = "Geolocation is not supported by this browser.";
              }
            }

            function showPosition(position) {
            $.ajax({
                    url: "./path/to/php/file.php",
                    type: "post",
                    data: { lat: position.coords.latitude, long: position.coords.longitude},
                    success: function (data) {
                      var dataParsed = JSON.parse(data);
                      console.log(dataParsed);
                    }
                  });
            }
            </script>

            </body>
            </html>

        //Php File

<?php

    //Create connection
  $connection = mysqli_connect('localhost', 'root', '', 'dbase');
    if($_POST['lat'] && $_POST['long']){
      $lat = $_POST['lat'];
      $long = $_POST['long'];

      $q = "INSERT INTO location (lat, long) VALUES ('$lat', '$long')";

      $query = mysqli_query($connection, $q);

      if($query){
          echo json_encode("Data Inserted Successfully");
          }
      else {
          echo json_encode('problem');
          }
      }

?>
0 голосов
/ 10 февраля 2019

Короче говоря:

Вы должны использовать сторону сервера вместо прямого доступа со стороны клиента JS к вашей базе данных

InГлубина:

Во-первых, давайте договоримся, что ваша БД для вас полезна, и вы хотите сохранить ее как можно более защищенной .

Во-вторых, давайте также договоримсяэтот код на стороне клиента (особенно JS) уязвим и может быть идеальным местом для потенциальных атакующих.

После того, как все это настроено, давайте 'определим, как мы создаем соединение с базой данных:

  • Определите имя пользователя и пароль для доступа к БД (обычно БД предварительно определяют пользователя admin во время установки)
  • Создание connection string в вашем коде для подключения БД с помощьюупомянутые выше учетные данные (например, имя пользователя и пароль)
  • Выполнение операций (в основном запросов) с БД

Таким образом, если вы выставите connection string в JS на стороне клиента, это приведет к (в конце концов) кому-то, имеющему права доступа к вашей БД.

В «хорошем сценарии» (что довольно плохо) у пользователя не будет прав администратора, поэтому потенциальный ущерб будет ограничен (чтение конфиденциальной информации, удаление записей или просто созданиеподдельные записи, чтобы испортить ваши данные).

В «сценарии плохого случая» злоумышленник сможет получить доступ к вашей БД с правами администратора, изменить пароль пользователя (таким образом блокируя вас) и забрать всю БД для себяили «просто» прослушать вашу БД и получить обновленные данные (например, пиявку)

И именно поэтому мы используем серверный код для работы с соединениями и операциями БД

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...