有人能看到我哪里出错吗?我试图通过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
这是什么原因?
我在想的一些事情:
谢谢!
答案 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)
问题已经得到解答,因此只会在此处添加解决方案。 由于禁用的字段未随表单一起提交而被一起忽略,因此可以使用已经回答的只读字段。
<input type="text" name="recipientemail" value="email@email.com" readonly />
但是如果您仍想保留已禁用字段的样式(反映该字段不可编辑)以及提交它,您可以在代码中使用隐藏字段:
<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>
希望这会增加您的解决方案。