我一直在這裏已經有很長一段時間了,我幾乎沒有使用PHP的經驗,並且我只從JavaScript開始。使用JS在服務器上運行PHP腳本
我試圖從網頁上的JavaScript使用AJAX運行我的服務器上的PHP腳本。說實話,我對自己在做什麼沒有太多的想法。
我當前的代碼:
JS:
function Write() {
$.ajax({
type: "POST",
url: "Write.php",
data: {
'GUID': "12345678987654321",
'IP': "127.0.0.2",
'USERNAME': "George",
'BAN_REASON': "Broke my pencil."
},
success: function(data) {
console.log(data);
}
});
}
PHP:
<?php
exec("java -jar Database.jar '.$_POST['GUID']' '.$_POST['IP']' '.$_POST['USERNAME']' '.$_POST['BAN_REASON']'");
?>
(我也不太完全相信,我這樣做正確的字符串,等等,幫助將不勝感激)
基本上,該PHP代碼是使用我寫的一個Java程序寫MySQL數據庫使用由PHP「exec()」發送的參數。它根本不寫入數據庫,所以我認爲它是AJAX轉到PHP函數的東西。
當「寫()」的跑了,它是所有打印出來的PHP代碼到控制檯...
新規範
<?php
//Server
$servername = "localhost";
$dbusername = $_POST['DB_USERNAME'];
$password = $_POST['DB_PASSWORD'];
$dbname = "bansdb";
$username = $_POST['USERNAME'];
$guid = $_POST['GUID'];
$ip = $_POST['IP'];
$ban_reason = $_POST['BAN_REASON'];
$connection = new mysqli($servername, $dbusername, $password, $dbname);
if ($connection->connect_error) {
die("Connection Failed: " . $connection->connect_error);
}
$sql = "INSERT INTO bans (GUID, IP, USERNAME, BAN_REASON)
VALUES ('$guid', '$ip', '$username', '$ban_reason')";
if (mysqli_query($connection, $sql)) {
echo "Ban successfully added.";
} else {
echo "Error: " . $sql . mysqli_error($connection);
}
mysqli_close($connection);
?>
你用雙引號封裝,而不是單個。這種方法也存在巨大的安全缺陷。例如這個''。$ _ POST ['GUID']''不是連接的。爲什麼不使用PHP的'mysqli'或'PDO'寫數據庫? – chris85
是的,我想要設置它的方式是用戶必須在網頁上提供一個密碼,然後傳遞給「Database.jar」。所以如果密碼不正確,它將無法對MySQL做任何事情。 如果還有其他缺陷,請告訴我。我對這一切都很陌生,所以我的方法可能會出現明顯的問題。 – Daedalus
爲什麼不用PHP做這一切?同時將用戶數據直接傳遞給命令行可以打開各種注入。 – chris85