为什么“禁用”会在通过电子邮件发送联系表单时导致问题?

时间:2015-04-18 19:29:21

标签: php email

我在联系表单中有一个输入来记录用户的IP地址:

<input type="text" class="form-control" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" disabled>

这没关系。它会在用户填写联系表单时显示用户的IP地址。

问题在于电子邮件中包含此内容。

我将其包含在电子邮件中:

  $ip = $_POST['ip'];

但它会在send:

上生成此错误消息
Notice: Undefined index: ip in /var/www/contact.php on line 51

我没有收到任何其他输入的错误消息,因此我假设它与在表单中使用disabled有关吗?​​

3 个答案:

答案 0 :(得分:1)

已禁用不会导致此错误,您应该做两件事:1。使用W3C验证程序检查您的网站是否已经过验证。 2.尝试使用'readonly'而不是'disabled'看看会发生什么 编辑:  1.检查元字符集,使用utf-8就可以了。

编辑2:请注意$_SERVER['REMOTE_ADDR'];并不总能解析客户端的IP地址。

答案 1 :(得分:0)

不要使用disabled

请改为:

<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>">

因为disabled表示在提交表单时不会发送该字段的值。

答案 2 :(得分:0)

来自MDN

  

...禁用控件的值不会随表单一起提交。

您可以使用readonly来解决此问题。