为什么我的网络表单(PHP)无法正常工作(发送电子邮件)

时间:2014-03-20 02:35:43

标签: php forms email

我在下面有一个非常简单的“联系我们”表单,但它似乎不再向我的电子邮件地址发送电子邮件了。我有一些略有不同的PHP文件用于不同的表单,但它们都使用下面设置的基本规则。谁能看到任何问题? PHP不是我的强项....

<form id="form" name="myemailform" method="post" action="submit.php">
     <h3>Contact Us</h3>
     <p>Please use this form to get in touch with us, Thanks...</p>
     <label>Name </label>
     <input name="name" type="text" id="name" />
     <label>Email </label>
     <input type="text" name="email" id="email" />
            <p class="antispam">Leave this empty:<br /><input name="url" /></p>
     <label>Comment </label>
     <textarea name="comment" id="comment"></textarea>
     <button type="submit" name='submit' value="submit">Send</button>
</form>

这使用一个简单的PHP脚本。顺便说一下,班级antispam只是使用url隐藏了display:none;字段。我在下面的例子中更改了我的电子邮件地址。

<?php

// if the url field is empty
if(isset($_POST['url']) && $_POST['url'] == ''){

    // put your email address here
    $youremail = 'MYEMAILADDRESS@hotmail.com';

    $body = "Name     : $_POST[name] \n
    E-Mail   : $_POST[email] \n
    Message  : $_POST[comment]";

    if( $_POST['email'] && !preg_match( "/[\r\n]/", $_POST['email']) ) {
      $headers = "From: $_POST[email]";
    } else {
      $headers = "From: $youremail";
    }

    mail($youremail, 'Poiple Shadow - Web Message', $body, $headers );

    header('Location: Thank-You.htm');
}


?>

2 个答案:

答案 0 :(得分:0)

修改:好像我从一开始就是对的(并删除了原来的评论

您的<input name="url" />需要包含应为text的类型。

将其更改为<input type="text" name="url" />


编辑#2 (我对此事的调查结果) 2014年3月20日 - 上午12:20

http://www.w3.org/TR/html-markup/input.url.html

type = "url"
指定其input元素是用于编辑元素值中给出的绝对URL的控件。


我引用:http://davidwalsh.name/html5-email

David Walsh撰写于2010年9月15日

使用类型的优势=&#34;电子邮件&#34;并输入=&#34; url&#34;

使用这些特殊的INPUT类型有一些优点:

  • 您可以使用输入[type = email]
  • 轻松设置所有电子邮件INPUT元素的样式
  • 您可以使用input [type = url]
  • 轻松设置所有网址INPUT元素的样式
  • 此INPUT类型可以被认为在语义上更正确。
  • 移动设备可访问性:如果您的用户正在使用iPhone浏览并且他们收到特殊的电子邮件输入,则iPhone将显示一个键盘,主屏幕上提供了@符号。如果INPUT的类型为&#34; url&#34;,iPhone将显示&#34; .com&#34;主键盘屏幕上的按钮:

来自http://htmlref.labs.oreilly.com/beta/element-input-url.html

HTML: XHTML:或

仅限HTML5。创建用于输入单个绝对URL的文本输入控件。用户代理可以验证输入的数据以确保其格式正确,如果不匹配则返回错误消息。

值:文字 指定此控件的初始值     


https://code.google.com/p/chromebackspaceonlinux/issues/detail?id=37

问题37:HTML5标记的功能被破坏

由glaj报道... @ gmail.com,2014年1月16日

哪些步骤会重现问题?
1.转到带有元素的站点(或在任何站点上更改任何站点)并在关注该元素时点击退格。

预期产量是多少?你怎么看? 应删除输入中的字符,而不是前一页。

您使用的是哪个版本的产品?什么操作系统?
Linux 3.5.0-32-generic(Mint 15)

上的v0.52.0_0

请在下面提供任何其他信息 我已经在本地解决了这个问题:

$HOMEDIR/.config/google-chrome/Default/Extensions/aeffggjddcchloadflonilaahpclmbnm/0.52.0_0/backspace.js

在第106行添加以下内容:

if (target.type == 'url')
    return true;

来自Mozilla.org - https://hacks.mozilla.org/2010/11/firefox-4-html5-forms/

使用Firefox 27.0.1,在www.example.com中输入时,该字段会亮起红色,并使用完整的http://电话批准该字段。


我对此事的预测(但不是结论)是这样的:

因为条件语句基于表单元素url,所以如果没有&#34;类型&#34; PHP可能不会让它通过。声明。

我还没有在谷歌上找到任何支持这一理论的东西,但是如果我这样做的话,我会在我去的时候更新我的答案。

答案 1 :(得分:0)

谢谢大家,这似乎是 type =&#34; text&#34; 的问题。显然它确实有所作为。非常感谢您的回复。