【发布时间】:2019-10-22 19:43:11
【问题描述】:
编辑: 我忘了要求 WP-Load.php 包含 $wpdb() 函数。
我在 wordpress 中创建了一个页面,其中包含一个表单。 现在表单通过这个 javascript 代码将数据发送到 PHP 文件
<script>
$(document).ready(function() {
$("#sbmit").click(function() {
var episode = $("#text1").val().split("\n");
var server1 = $("#text2").val().split("\n");
var server2 = $("#text3").val().split("\n");
var server3 = $("#text4").val().split("\n");
if (server1 != undefined || server2 != undefined || server3 != undefined ) { $.post("/submit.php", {
episode1: JSON.stringify(episode),
server11: JSON.stringify(server1),
server21: JSON.stringify(server2),
server31: JSON.stringify(server3),}, function(data) {alert(data);}
);
}});
});
</script>
和 Submit.php 文件将数据上传到单独的 MYSQL 数据库,因为我使用 wordpress 我知道 $wpdb 是在数据库中插入数据的推荐方式但是当我使用 $wpdb 控制台日志给出 500 Error 所以我将 wpdb 更改为 new sqli 方法和成功了。
几分钟后,当我尝试更新我的任何帖子时,它说更新失败但无论如何都更新了我的帖子,然后当我打开 PHPmyAdmin 时出现数百个错误,我的全部数据是,当我打开我的 wp-admin 时,它启动了 wordpress从安装页面就像我刚刚安装了 wordpress 并且还说 wordpress 数据库错误
所以我在问“mysqli 方法是否会影响 Wordpress?”
下面是 Submit.PHP 代码,但是当我点击提交时,我得到 500 错误。
<?php
// Create connection
$conn = new wpdb($username, $password, $dbname, $servername);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$Episode2=json_decode($_POST['episode1'], true); // Fetching Values from URL
$Server12=json_decode($_POST['server11'], true);
$Server22=json_decode($_POST['server21'], true);
$Server32=json_decode($_POST['server31'], true);
for ($x = 0; $x < count($Episode2); $x++) {
if ($Episode2[$x] != "") {
$sql = "SELECT Episode FROM DBZ WHERE Episode='".$Episode2[$x]."'";
$result = $conn->get_results($sql);
if (mysqli_num_rows($result) > 0) {
echo "Episode $Episode2[$x] Server ";
if($Server12[$x] != "") {$sql = "UPDATE DBZ SET Server1 = '".$Server12[$x]."' WHERE Episode = '".$Episode2[$x]."' "; $result = $conn->get_results($sql); echo "1, ";}
if($Server22[$x] != "") {$sql = "UPDATE DBZ SET Server2 = '".$Server22[$x]."' WHERE Episode = '".$Episode2[$x]."' "; $result = $conn->get_results($sql); echo "2, ";}
if($Server32[$x] != "") {$sql = "UPDATE DBZ SET Server3 = '".$Server32[$x]."' WHERE Episode = '".$Episode2[$x]."' "; $result = $conn->get_results($sql); echo "3 ";}
echo "Updated \n";
} else {
$sql = "INSERT INTO DB VALUES ('".$Episode2[$x]."','".$Server12[$x]."', '".$Server22[$x]."','".$Server32[$x]."')";
$result = $conn->get_results($sql);
echo "Episode $Episode2[$x] is Added in Database \n";
}
} else { echo "Episode Number is Blank";}
}
$conn->close(); // Connection Closed.
?>
【问题讨论】:
-
这是非常不安全的。研究 SQL 注入,你不应该这样模板。对于
500 Error,请检查您服务器的错误日志。 -
错误的实际原因是缩进不佳。您有三个未封闭的对照组。
标签: php sql wordpress-theming