我已经在这方面工作了很长一段时间,而且我几乎没有使用PHP的经验,而且我只是从JavaScript开始。
我正在尝试使用AJAX从网页上的JavaScript运行我的服务器上的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代码使用的是我使用PHP“exec()发送的参数写入MySQL数据库的Java程序。”它根本不是写入数据库,所以我假设它是AJAX进入PHP函数的东西。
当运行“Write()”时,它所做的就是将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);
?>
答案 0 :(得分:1)
我不会通过网络传递您的数据库用户/密码。只需创建一个简单的应用程序密码,并使用db用户/密码在PHP中静态存储密码(在HTML修改表单中输入APP_PASSWORD
)。除了关闭SQL注入之外的参数化查询,您还可以在您的值中使用单引号,而不必担心查询中断(驱动程序处理引用)。
<?php
//Server
$servername = "localhost";
$dbusername = 'static_db_user';//$_POST['DB_USERNAME'];
$password = 'staticpassword';//$_POST['DB_PASSWORD'];
$dbname = "bansdb";
if($_POST['APP_PASSWORD'] != 'Some generic password') {
die('Invalid Credentials');
}
$username = $_POST['USERNAME'];
$guid = $_POST['GUID'];
$ip = $_POST['IP']; // I would store IP as an unsigned int, ip2long
$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 (?,?,?,?)";
if ($stmt = mysqli_prepare($connection, $sql)) {
mysqli_stmt_bind_param($stmt, , 'ssss', $guid, $ip, $username, $ban_reason;
if(mysqli_stmt_execute($stmt)) {
echo "Ban successfully added.";
} else {
echo "Execute Error: " . $sql . mysqli_error($connection);
}
} else {
echo "Prepare Error: " . $sql . mysqli_error($connection);
}
mysqli_close($connection);
?>
答案 1 :(得分:0)
它只是将PHP代码打印到控制台......
您是否有配置为执行PHP代码的Web服务器?你必须意识到,你不能只在你的“服务器”上的文件系统打开的浏览器中运行一个普通的php文件。
创建一个名为info.php
的新文件并将其保存到您的Web服务器。里面应该只有这个:
<?php
phpinfo();
如果您在浏览时看到该代码,那么您没有启用PHP。否则,您将看到有关配置的大量信息。
不太确定我是否正确地使用了字符串
这可能适合你:
<?php
exec("java -jar Database.jar $_POST[GUID] $_POST[IP] $_POST[USERNAME] $_POST[BAN_REASON]");