[英]How to send GPS location to mysql table every x minutes
我正在編寫一些代碼,每 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>
簡而言之:
您應該使用服務器端而不是使用從客戶端JS
到您的數據庫的直接訪問
深入:
首先,讓我們同意你的數據庫是你有價值,你要保持它作為保護越好。
其次,讓我們也同意客戶端代碼(尤其是JS
)容易受到攻擊,並且可能是潛在攻擊者攻擊的理想場所。
完成所有設置后,讓我們定義如何創建與數據庫的連接:
admin
用戶)connection string
以使用上述憑據(例如用戶名和密碼)連接數據庫 因此,在客戶端 JS 中公開您的connection string
,將導致(最終)有人有權訪問您的數據庫。
在“好情況” (這很糟糕)中,用戶將沒有管理員權限,因此潛在的損害將受到限制(讀取敏感信息、刪除記錄或只是創建虛假記錄來破壞您的數據)。
在“糟糕的情況”中,攻擊者將能夠以管理員權限訪問您的數據庫,更改用戶密碼(從而將您鎖定)並將整個數據庫歸為己有,或者“只是”監聽您的數據庫並獲取更新的數據(像螞蟥一樣)
這就是為什么我們使用服務器端代碼來處理數據庫連接和操作
//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');
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.