【问题标题】:hidden values are not passing in form action隐藏值未在表单操作中传递
【发布时间】: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 中?

标签: php forms


【解决方案1】:

当我改变这个时它为我解决了

<input type='hidden' name='hdnTakenDate' id='hdnTakenDate' value='<?php echo $TakenDate; ?>' />

<input type='hidden' name='hdnSiteHeadDbKey' id='hdnSiteHeadDbKey' value='<?php echo $SiteHeadDbKey; ?>' />

到这里

<input type='hidden' name='hdnTakenDate' id='hdnTakenDate' value='<?php echo $TakenDate; ?>' **/>**

<input type='hidden' name='hdnSiteHeadDbKey' id='hdnSiteHeadDbKey' value='<?php echo $SiteHeadDbKey; ?>' **/>**

【讨论】:

  • 谢谢约瑟夫,但这对我不起作用,并且星星显示在页面上。
  • @ManoranjanJena i ment by stars 左右两侧的额外空间并尝试通过单击ctrl + shift + R 清除您的cache
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多