为啥在通过电子邮件发送联系表格时“已禁用”会导致问题? [复制]

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 来解决此问题。

【讨论】:

以上是关于为啥在通过电子邮件发送联系表格时“已禁用”会导致问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 php 没有将我的联系表单输入发送到我的电子邮件?

联系表格发送时电子邮件无效

我正在尝试通过联系表格发送电子邮件

Codeigniter 中的联系我们电子邮件功能不起作用

联系表格 7 WP 主题在提交时未发送输入的信息

如何在 Docker 容器中从 WordPress(联系表格)发送电子邮件?