无法获取提交表单的POST值

时间:2015-01-13 12:10:19

标签: php forms

有人能看到我哪里出错吗?我试图通过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. 页面上有多种形式。但是,该表单中的提交按钮不应仅触发并POST该特定表单上填写的数据吗?它不应该影响任何其他形式吗?
  2. 数据已预先填写且字段已停用。它不喜欢这个吗?我认为它应该能够从预先填充和禁用的字段中获取数据吗?
  3. 谢谢!

5 个答案:

答案 0 :(得分:3)

问题是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规则就足够了。

答案 1 :(得分:1)

您可以在案例中使用readonly属性,通过这样做,您就可以发布您的字段数据。

答案 2 :(得分:1)

disabled属性是布尔属性。 如果存在,则指定应禁用该元素,并且不应传递任何值 您可以使用以下两个选项:

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

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

答案 3 :(得分:0)

if(isset($_POST['recipientemail'])){
    $email = htmlspecialchars($_POST["recipientemail"]);
    echo $email;
}

您可以查看“收件人邮件”是否已成为&#39;数组索引在使用之前就存在,以避免错误。

答案 4 :(得分:0)

问题已经得到解答,因此只会在此处添加解决方案。 由于禁用的字段未随表单一起提交而被一起忽略,因此可以使用已经回答的只读字段。

解决方案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>

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