无法获取提交表单的 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
这是什么原因造成的?
我在想的几件事:
- 页面上有多个表单。但是,该表单中的提交按钮不应该只触发并且 POST 在该特定表单上填写的数据吗?它不应该影响任何其他形式?
- 数据已预填,字段已禁用。它不会喜欢这样吗?我认为它应该能够从预填充和禁用的字段中获取数据?
谢谢!
问题是 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>
希望这对您的解决方案有所帮助。
谁能看出我哪里出错了?我正在尝试通过 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
这是什么原因造成的?
我在想的几件事:
- 页面上有多个表单。但是,该表单中的提交按钮不应该只触发并且 POST 在该特定表单上填写的数据吗?它不应该影响任何其他形式?
- 数据已预填,字段已禁用。它不会喜欢这样吗?我认为它应该能够从预填充和禁用的字段中获取数据?
谢谢!
问题是 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>
希望这对您的解决方案有所帮助。