php联系表单不发送内容

时间:2014-05-01 21:30:37

标签: php forms

我正在wordpress中构建一个网站,并且通常使用contactform7插件来处理表单,但我正在尝试学习如何设置表单而不必依赖插件。我最近取得了成功,但在这个最新的网站上,我的内容正在发送给收件人。我收到了一封电子邮件,但表格中没有任何值被发送。

这是我的表格(我知道我还必须学习验证/清理,这将是另一个主题!):

<form action="<?php echo home_url('/'); ?>sent/" method="POST" class="col-sm-7">
    <input id="name" placeholder="name:" name="name" type="text" class="form-control" required></label>
    <input id="email" placeholder="email:" name="email" type="text" class="form-control" required> 
    <textarea id="message" placeholder="message:" name="message" class="form-control" rows="8" required></textarea>
    <button id="contact-submit" type="submit" class="btn form-control">Submit</button>
</form>

当用户按下提交时,页面重定向到该文件中的url / sent /,我有:

<?php 
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name, $email, \nMessage: $message";
$recipient = "myemail@email.com";
$subject = "Contact Form Submission";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
?>

现在,当我收到收件箱中的电子邮件时,它会显示如下:

来自:,, 消息:

就是这样。有什么明显的东西我在这里不见了吗?任何帮助一如既往地非常感谢。

谢谢!

添加注释:似乎当按下提交按钮并且页面重定向时,它正在拉动404,虽然它重定向到IS的URL是正确的,实际上,即使我只刷新页面而不更改它丢弃的URL 404并加载页面内容。我想这就是内容没有发送的原因,但为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

事实证明这个问题是由于wordpress的问题。 Wordpress不允许您使用name =“name” - 这会导致404并且不会发送表单值。我将名称更改为'form_name',现在它完美无缺。

感谢您的帮助,希望这也可以帮助其他人!

感谢Tom Elliot在http://www.webdevdoor.com寻求帮助! http://www.webdevdoor.com/wordpress/submitting-form-wordpress-redirects-404-page/

答案 1 :(得分:0)

您应该始终检查值是否已设置

if(isset($_POST['name']) && isset($_POST['email'])){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $formcontent="From: $name, $email, \nMessage: $message";
    $recipient = "myemail@email.com";
    $subject = "Contact Form Submission";
    $mailheader = "From: $email \r\n";
    if(mail($recipient, $subject, $formcontent, $mailheader)){
     echo "message sent!";
    }else{
        die("Error!");
    }
}else{
    echo "email or name is not set";
}

同时尝试将按钮更改为<input type="submit">,即使它可能没有任何区别。 除此之外代码看起来很好