为啥在通过电子邮件发送联系表格时“已禁用”会导致问题? [复制]
Posted
技术标签:
【中文标题】为啥在通过电子邮件发送联系表格时“已禁用”会导致问题? [复制]【英文标题】:Why does 'disabled' cause problems when e-mailing contact forms? [duplicate]为什么在通过电子邮件发送联系表格时“已禁用”会导致问题? [复制] 【发布时间】:2015-06-25 15:21:40 【问题描述】:我在联系表单中有一个输入来记录用户的 IP 地址:
<input type="text" class="form-control" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" disabled>
这工作正常。当用户填写联系表格时,它会显示用户的 IP 地址。
问题是在电子邮件中包含此内容。
我将其包含在电子邮件中:
$ip = $_POST['ip'];
但它会在发送时生成此错误消息:
Notice: Undefined index: ip in /var/www/contact.php on line 51
我没有在任何其他输入中收到此错误消息,所以我认为这与在表单中使用 disabled
有关?
【问题讨论】:
看看Disabled form inputs do not appear in request。投票以重复结束。 【参考方案1】:disabled 不会导致此错误,您应该做两件事: 1. 检查您的网站是否已使用 W3C 验证器进行验证。 2. 尝试使用 'readonly' 而不是 'disabled' 看看会发生什么 编辑: 1.检查元字符集,使用utf-8就可以了。
编辑 2:请注意 $_SERVER['REMOTE_ADDR'];
并不总是解析客户端的 IP 地址。
【讨论】:
readonly
使它工作。为什么所有在线参考都说要使用这个disabled
?谢谢,我会在允许的情况下接受。
你可以找到更多信息@w3.org/TR/html401/interact/forms.html#disabled【参考方案2】:
不要使用disabled
。
改为这样做:
<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>">
因为disabled
表示提交表单时不发送该字段的值。
【讨论】:
【参考方案3】:来自MDN:
...禁用控件的值未与表单一起提交。
您可以改用readonly
来解决此问题。
【讨论】:
以上是关于为啥在通过电子邮件发送联系表格时“已禁用”会导致问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章