【发布时间】:2019-09-12 20:05:17
【问题描述】:
当我保存此表单时,所有 type="text" 字段都可以正常工作。但是隐藏字段值没有通过。
如果我从“隐藏”更改为“文本”,它工作正常。我不知道为什么我会遇到这个问题。
<form action="../model/meter-reading-model" method="POST">
<input type='hidden' name='hdnTakenDate' id='hdnTakenDate' value='<?php echo $TakenDate; ?>' />
<input type='hidden' name='hdnSiteHeadDbKey' id='hdnSiteHeadDbKey' value='<?php echo $SiteHeadDbKey; ?>' />
<button type='submit' name="btnSaveData" id="btnSaveData" class='btn btn-lg btn-danger'> Save Reading Data </button>
</form>
在另一个页面中接收
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($SaveData)){
$TakenDate = mysqli_real_escape_string($conn, $_POST['hdnTakenDate']);
$SiteHeadDbKey = mysqli_real_escape_string($conn, $_POST['hdnSiteHeadDbKey']);
}
}
【问题讨论】:
-
你为什么用
mysqli_real_escape_string($conn? -
我看不出有什么原因。如果你做
var_dump($_POST);,你会看到什么?您是否检查过 DevTools 的 Network 选项卡以查看整个表单提交? -
您对SQL Injection 敞开心扉。由于您使用的是mysqli,因此请利用prepared statements 这将处理可能出现的任何讨厌的引用问题。当查询未按您预期的方式工作时,请检查 mysqli errors 以查看是否存在问题。即使escaping这个字符串也不安全!
-
当我检查 $_POST 值时,我得到了除隐藏字段之外的所有值。如果我将隐藏更改为文本,我会得到所有值。
-
隐藏的输入是否在隐藏的 DIV 中?