我正在编写一些代码,每5分钟将用户当前的GPS坐标保存到mysql表中。我现在很熟悉PHP和学习javascript,因此在代码的javascript部分需要一些帮助。
我当前的代码示例将每5秒获取用户的GPS位置并将其设置为javascript变量lat和lon。 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>
答案 0 :(得分:0)
简而言之:
您应该使用服务器端,而不是使用客户端JS
对数据库的直接访问
深度:
首先,让我们同意您的数据库对您来说很有价值,并且您想尽可能保持其安全性。
第二,我们还同意客户端代码(尤其是JS
)容易受到攻击,并且可能是潜在攻击者受到攻击的理想之地。
在完成所有设置后,让我们定义如何创建与数据库的连接:
admin
用户)connection string
,以使用上述凭据(例如用户名和密码)连接数据库因此,将connection string
暴露在客户端JS中将(最终)导致某人具有对您的数据库的访问权限。
在“良好情况” (非常糟糕)中,用户将没有管理员权限,因此潜在的损害将受到限制(读取敏感信息,删除记录或仅创建虚假记录)搞乱您的数据)。
在“最坏的情况” 中,攻击者将能够以管理员权限访问您的数据库,更改用户密码(从而将您锁定),并将整个数据库移交给自己或只是”听您的数据库并获取更新的数据(如水le)
这就是为什么我们使用服务器端代码来处理数据库连接和操作
答案 1 :(得分:0)
//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');
}
}
?>