我正在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并加载页面内容。我想这就是内容没有发送的原因,但为什么会发生这种情况?
答案 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">
,即使它可能没有任何区别。
除此之外代码看起来很好