【发布时间】:2017-08-25 15:06:47
【问题描述】:
我已经详尽地搜索了完成这项任务的方法。我在将 div 中的内容转换为能够处理为 php 语句的变量时遇到问题。我尝试过使用 AjaxForm 我尝试过 AJax。
这是我的表单代码,标题为“library.php”。在这里,我有一个 ID 为“输入”的 div。我正在尝试获取此 div 中的数据,该数据将是“公共”或“私人”选项。然后我将继续使用按钮 create 将数据提交到 database.php
<form method="post" action="library.php" id="form3">
<a id="libOptPP" class="select">
**<div id="input" class="input" name="Privacy">
</div>**
<div id="libOptPP2" class="select-options">
<ul>
<li id="pub" value="1"><span>Public</span> (logo) </li>
<li id="priv" value="2" class="selected"><span>Private</span></li>
</ul>
</div>
</a>
<div class="libOptCS">
<span class="bbCT">
<button type="submit" name="create"> Create </button>
</span>
</div>
</form>
这是位于 Library.php 头部的脚本,我将尝试使用 ajax 将变量“privacy”发送到 Database.php。此变量将包含上一个代码块中所述的 div 的文本。这将是“公共”或“私人”选项。我没有使用 div 的 ID 名称,而是使用类来选择它,即“.select .input”。
<script>
$(document).ready(function main() {
$("create").click(function() {
var privacy = $(.select .input).text();
.ajax({
type: "POST",
url: ../../database/database.php,
data: "privacy="+privacy,
dataType: "html",
async: false,
success: function(data) {
alert(data);
}
});
});
});
</script>
这是将表单数据输入我的数据库的 php 代码。一旦我们单击前面代码中所述的创建按钮,这将激活将数据传输到适当的表和后续行中。
if (isset($_POST["create"])) {
$Privacy = mysqli_real_escape_string($db, $_POST['privacy']);
$ETH = mysqli_real_escape_string($db, $_POST['ETH']);
$Email_Phone_Number = $_SESSION['Email_Phone_Number'];
if ($Privacy === "Public") {
$sql = "INSERT INTO library (Title, Privacy, Bio, User_iD)
VALUES ('$ETH', '$Privacy', 'testbio', (SELECT User_iD FROM logstart WHERE Email_Phone_Number='$Email_Phone_Number'))";
mysqli_query($db, $sql);
}
if ($Privacy === "Private") {
$sql = "INSERT INTO library (Title, Privacy, Bio, User_iD)
VALUES ('$ETH', '$Privacy', 'testbio', (SELECT User_iD FROM logstart WHERE Email_Phone_Number='$Email_Phone_Number'))";
mysqli_query($db, $sql);
}
if (mysqli_query($db, $sql)) {
echo "YES!";
} else {
echo "No!";
}
}
某处未识别变量。当我按下“创建”按钮时,会创建“未识别索引:隐私”的弹出窗口。换句话说,$_POST['privacy'] 不包含我需要的数据,这些数据应该是 Public 或 Private,以便我可以识别它并进一步使用其余代码。
【问题讨论】:
-
不懂 PHP 但是...你为什么不使用输入控件 - 无论是隐藏、文本还是文本区域?此外,您绑定到创建按钮的单击事件,但它是一个提交按钮,并且您没有调用 preventDefault 所以可能在您的代码运行之前提交表单?
-
您的代码容易受到 SQL 注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者通过使用恶意输入值来破坏您的数据库。 bobby-tables.com 给出了风险解释,以及一些如何使用 PHP / mysqli 安全地编写查询的示例。
标签: php jquery json ajax form-data