【问题标题】:Cannot get POST value of submitted form无法获取提交表单的 POST 值
【发布时间】:2015-03-11 09:25:40
【问题描述】:

谁能看到我哪里出错了?我正在尝试通过 POST 获取表单中字段的值。

该字段已禁用并已预先填写。

<form method="POST" action="actions/remove-daily-recipient.php">
    <input type="text" name="recipientemail" value="email@email.com" disabled />
    <input type="submit" value="Remove"/>
 </form>

表单正确提交并转到我的脚本remove-daily-recipient.php

但是,该脚本的第一行应该获取电子邮件字段的值,但出现错误:

$email = htmlspecialchars($_POST["recipientemail"]);
echo $email;

// The error
Notice: Undefined index: recipientemail in [path/name] on line 5

这是什么原因?

我的一些想法:

  1. 页面上有多个表单。但是,该表单中的提交按钮不应该只触发并发布在该特定表单上填写的数据吗?它不应该影响任何其他形式吗?
  2. 数据已预先填写,该字段已禁用。不会是这样吗?我认为它应该能够从预先填充和禁用的字段中获取数据?

谢谢!

【问题讨论】:

标签: php forms


【解决方案1】:

问题是disabled字段未提交。

<input type="text" name="recipientemail" value="email@email.com" disabled />

您可以使用readonly 属性,以便将其包含在 POST 中。

<input type="text" name="recipientemail" value="email@email.com" readonly style="color: rgb(84,84,84); background: rgb(235,235,228); border: 1px solid rgb(169,169,169); padding: 1px;" />

如果您需要只读字段看起来像已禁用,则简单的 CSS 规则就足够了。

【讨论】:

    【解决方案2】:

    禁用属性是一个布尔属性。 当存在时,它指定元素应该被禁用并且它应该不传递任何值 您可以使用以下两个选项:

    <input type="text" name="recipientemail" value="email@email.com" readonly />
    

    <input type="text" name="recipientemail" value="email@email.com" />
    

    【讨论】:

    • 谢谢!这正是它。我认为这是沿着这些路线的东西。感谢您的出色回答。
    【解决方案3】:

    您可以在您的情况下使用只读属性,通过这样做您将能够发布您的字段数据。

    【讨论】:

    【解决方案4】:
    if(isset($_POST['recipientemail'])){
        $email = htmlspecialchars($_POST["recipientemail"]);
        echo $email;
    }
    

    您可以在使用前检查'recipientemail'数组索引是否存在,以避免错误。

    【讨论】:

      【解决方案5】:

      问题已经回答了,所以这里只补充解决方案。 由于禁用的字段没有与表单一起提交并且被一起忽略,因此可以使用已回答的只读字段。

      解决方案 1。

      <input type="text" name="recipientemail" value="email@email.com" readonly />
      

      但如果您仍想保留禁用字段的样式(反映该字段不可编辑)并提交它,您可以在代码中使用隐藏字段:

      解决方案 2。

      <form method="POST" action="actions/remove-daily-recipient.php">
          //this field will be shown as greyed-out
          <input type="text" name="justforshowing" value="email@email.com" disabled />
          //this field will be submitted
          <input type="hidden" name="recipientemail" value="email@email.com" />
          <input type="submit" value="Remove"/>
      </form>
      

      希望这会增加您的解决方案。

      【讨论】:

        猜你喜欢
        • 2017-09-01
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多