Javascript 如何每x分钟将GPS位置发送到mysql表

Javascript 如何每x分钟将GPS位置发送到mysql表,javascript,mysql,gps,Javascript,Mysql,Gps,我正在编写一段代码,每5分钟将用户当前的GPS坐标保存到mysql表中。我熟悉PHP,目前正在学习javascript,因此我需要一些代码javascript部分的帮助 我当前的代码示例将每隔5秒获取用户的GPS位置,并将其设置为javascript变量lat和lon。javascript函数目前每5秒运行一次,但最终会更新为每5分钟运行一次 每次调用函数时,我需要向代码中添加什么来将lat和lon变量插入mysql表 下面是我当前的代码示例: 每5秒获取一次GPS定位 var x=doc

我正在编写一段代码,每5分钟将用户当前的GPS坐标保存到mysql表中。我熟悉PHP,目前正在学习javascript,因此我需要一些代码javascript部分的帮助

我当前的代码示例将每隔5秒获取用户的GPS位置,并将其设置为javascript变量lat和lon。javascript函数目前每5秒运行一次,但最终会更新为每5分钟运行一次

每次调用函数时,我需要向代码中添加什么来将lat和lon变量插入mysql表

下面是我当前的代码示例:


每5秒获取一次GPS定位

var x=document.getElementById(“坐标”); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(showPosition); setTimeout(getLocation,5000); }否则{ x、 innerHTML=“此浏览器不支持地理位置。”; } } 功能显示位置(位置){ x、 innerHTML=“纬度:”+position.coords.Latitude+ “
经度:”+position.coords.Longitude; }
简而言之:

您应该使用服务器端,而不是从客户端
JS
直接访问数据库

深度:

首先,让我们同意您的数据库对您来说是有价值的,您希望尽可能地保护它

其次,让我们也同意客户端代码(尤其是
JS
)是易受攻击的,可能是潜在攻击者攻击的理想场所

通过所有这些设置,让我们定义如何创建与个人数据库的连接:

  • 定义访问DB的用户名和密码(通常DB在安装过程中预先定义
    admin
    用户)
  • 在代码中创建
    连接字符串
    ,以使用上述凭据(例如用户名和密码)连接数据库
  • 对数据库执行操作(主要是查询)
因此,在客户端JS中公开您的
连接字符串
,将(最终)导致有人拥有对您数据库的访问权限

在“良好案例场景”(相当糟糕)中,用户将没有管理员权限,因此潜在的损害将受到限制(读取敏感信息、删除记录,或者只是创建虚假记录来破坏数据)

在“坏情况场景”中,攻击者将能够以管理员权限访问您的数据库,更改用户密码(从而将您锁定),并将整个数据库保存到自己的数据库中,或者“只是”监听您的数据库并获取更新的数据(如水蛭)

这就是为什么我们使用服务器端代码来处理DB连接和操作的原因
            //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');
          }
      }

?>
每5秒获取一次GPS定位

var x=document.getElementById(“坐标”); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(showPosition); setTimeout(getLocation,5000); }否则{ x、 innerHTML=“此浏览器不支持地理位置。”; } } 功能显示位置(位置){ $.ajax({ url:“./path/to/php/file.php”, 类型:“post”, 数据:{lat:position.coords.latitude,long:position.coords.longitude}, 成功:功能(数据){ var dataParsed=JSON.parse(数据); console.log(数据解析); } }); } //Php文件
某种后端。您编写的代码将在浏览器(客户端)中执行。您需要一个在主机上运行并具有数据库连接器的服务。可能存在的重复项