2013-04-26 311 views
0

我有我的WordPress网站一个简单的形式,它允许用户登录到一个通讯:PHP/HTML新闻稿

HTML

<form method="POST" action="newsletter.php"> 
<input type="text" class="form" name="Email" size="20" placeholder="Email address"> 
<input type="submit" class="button" value="Submit" name="Submit"></p> 
</form> 

提交电子邮件地址后,用户正在被重定向到一个名为newsletter.php的新站点,并出现以下消息:您的电子邮件地址已成功提交

PHP

<?php 
$recipient = "[email protected]"; 
$subject = "Newsletter subscription"; 
$sender = $recipient; 
$body .= "Add this email adress to the newsletter: \n"; 
$body .= " ".$_REQUEST['Email']." \n"; 
mail($recipient, $subject, $body, "From: $sender") or die ("Mail could not be sent."); 
echo "Your email address has been successfully submitted"; 
?> 

我想什么了,应该知道:我怎样才能显示“成功消息”在WordPress网站,而不是newsletter.php?

完美的解决方案是在注册表单下方打开的小型div。

+0

我会在你的主题中构建一个页面模板,并在其中放置newsletter.php。将模板分配给Wordpress中的页面,您就可以轻松前往。 – 2013-04-26 16:36:22

+2

@RelevantUsername这并不是最干净和最简单的方法。你正在为这个问题引入一种全新的语言。 – 2013-04-26 16:37:15

+0

谢谢你们,猜我忘了提及我既不认识Ajax也不认同JavaScript :)现在尝试在互联网上找到一些代码......编辑:尼古拉斯,这听起来像一个好方法。我会先尝试一下。 – Kev89 2013-04-26 16:41:01

回答

4

你可以改变形式是这样的:(无action属性的意思是“提交给当前URL”)

<form method="POST"> 
    <input type="text" class="form" name="Email" size="20" placeholder="Email address"> 
    <input type="submit" class="button" value="Submit" name="Submit"></p> 
</form> 

然后你的PHP添加到同一页的形式是,也增加了检查,以便它只能运行在表单提交后:

<?php 
    if(isset($_POST['Email'])) { 
     $recipient = "[email protected]"; 
     $subject = "Newsletter subscription"; 
     $sender = $recipient; 
     $body .= "Add this email adress to the newsletter: \n"; 
     $body .= " ".$_REQUEST['Email']." \n"; 
     mail($recipient, $subject, $body, "From: $sender") or die ("Mail could not be sent."); 
     echo "<div>Your email address has been successfully submitted</div>"; 
    } 
?> 

您可能还需要你的错误处理策略更改为输出<div class="error">或某些而不是死亡。


我没有使用WordPress的一段时间,所以我不知道具体有,但如果这是一个准系统PHP的网站,你可以只是它一起在第一页的源:

<form method="POST"> 
    <input type="text" class="form" name="Email" size="20" placeholder="Email address"> 
    <input type="submit" class="button" value="Submit" name="Submit"></p> 
</form> 

<?php 
    if(isset($_POST['Email'])) { 
     $recipient = "[email protected]"; 
     $subject = "Newsletter subscription"; 
     $sender = $recipient; 
     $body .= "Add this email adress to the newsletter: \n"; 
     $body .= " ".$_REQUEST['Email']." \n"; 
     mail($recipient, $subject, $body, "From: $sender") or die ("Mail could not be sent."); 
     echo "<div>Your email address has been successfully submitted</div>"; 
    } 
?> 
+0

正是我所说的,加上实际的代码:+1 – cdonner 2013-04-26 16:40:41

+0

@cdonner:谢谢! – 2013-04-26 16:44:16

+0

这看起来不错,我会测试它...谢谢,马特:) – Kev89 2013-04-26 16:47:14

2

而不是发送到Newsletter.php,您可以使页面发布自己并处理订阅那里。或者Newsletter.php可能无法正常工作,并将您重定向到引用链接,然后您可以显示订阅信息。但这已经过时了,任何Ajax post-back解决方案肯定会更加性感。