Javascript 如何每x分钟将GPS位置发送到mysql表
我正在编写一段代码,每5分钟将用户当前的GPS坐标保存到mysql表中。我熟悉PHP,目前正在学习javascript,因此我需要一些代码javascript部分的帮助 我当前的代码示例将每隔5秒获取用户的GPS位置,并将其设置为javascript变量lat和lon。javascript函数目前每5秒运行一次,但最终会更新为每5分钟运行一次 每次调用函数时,我需要向代码中添加什么来将lat和lon变量插入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定位
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
- 在代码中创建
,以使用上述凭据(例如用户名和密码)连接数据库连接字符串
- 对数据库执行操作(主要是查询)
连接字符串
,将(最终)导致有人拥有对您数据库的访问权限
在“良好案例场景”(相当糟糕)中,用户将没有管理员权限,因此潜在的损害将受到限制(读取敏感信息、删除记录,或者只是创建虚假记录来破坏数据)
在“坏情况场景”中,攻击者将能够以管理员权限访问您的数据库,更改用户密码(从而将您锁定),并将整个数据库保存到自己的数据库中,或者“只是”监听您的数据库并获取更新的数据(如水蛭)
这就是为什么我们使用服务器端代码来处理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文件
某种后端。您编写的代码将在浏览器(客户端)中执行。您需要一个在主机上运行并具有数据库连接器的服务。可能存在的重复项