无法获取提交表单的 POST 值

Cannot get POST value of submitted form

谁能看出我哪里出错了?我正在尝试通过 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. 数据已预填,字段已禁用。它不会喜欢这样吗?我认为它应该能够从预填充和禁用的字段中获取数据?

谢谢!

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

您可以在您的案例中使用 readonly 属性,通过这样做您将能够 post 您的字段数据。

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

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

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

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

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

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

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

希望这对您的解决方案有所帮助。