我一直在这里已经有很长一段时间了,我几乎没有使用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