2013-04-26 308 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解決方案肯定會更加性感。