2010-01-28 103 views
2

我有一個網站,我有兩個文本框用於輸入信息。我的「提交」按鈕命令一個PHP文件將兩個文本框中的信息複製/粘貼到名爲「Members.txt」的文本文件中。目的是從文本框中獲取信息並創建郵件列表。現在我的問題是我知道PHP文件正在調用文本文件,因爲每次點擊提交時,我都可以在我的ftp上看到文本文件已被編輯,同時我嘗試提交以作爲列表的一部分。另外,文本文件試圖將信息放入文本文件中,因爲我可以看到每次點擊「提交」按鈕時,文本文件輸入行越來越低。換句話說,輸入完整的一行。但沒有文字。不,文字不是白色的。我究竟做錯了什麼?創建郵件列表(PHP)

<h2>Join our Mailing List</h2> 
    <form method="post" action="add.php" name="signup"> 
    <input type="hidden" name="pommo_signup" value="true" /> 
    <table border="0" bordercolor="#000000" 
    bordercolordark="#000000" bordercolorlight="#000000"> 
    <tr> 
     <td width="203" bgcolor="#FFFFFF">&nbsp;</td> 
     </tr> 
    <tr> 
     <td bgcolor="#FFFFFF"> NAME: <font size="4"> 
     <input name="name" 
      type="text" size="20" maxlength="100" /> 
     </font></td> 
     </tr> 
    <tr> 
     <td height="26" bgcolor="#FFFFFF"> EMAIL: <font size="4"> 
     <input name="email" 
      type="text" size="20" maxlength="100" /> 
     </font></td> 
     </tr> 
    <tr> 
     <td height="31" bgcolor="#FFFFFF"><span style="text-align: left"></span><p align="middle"> 
     <input type="image" src="ok.jpg" /> 
     </p></td> 
     </tr> 
    </table> 
    </form> 

THEN BELOW IS THE FORM THAT IS SUPPOSED TO ADD TO THE TEXT BOX. 

<?php 
$filename = "members.txt"; 
$fd = fopen ($filename, "r"); 
$contents = fread ($fd, filesize ($filename)); 
fclose ($fd); 
if(strstr($contents,$email)) { 
print "You're already subscribed to this mailing list."; 
} 
else { 
echo "Thank you $email for joining the mailing list"; 
if (!$save = fopen("members.txt","a")) { 
exit; 
} 
fwrite($save,"$email\r\n"); 
fclose($save); 
if (!$save = fopen("names.txt","a")) { 
exit; 
} 
fwrite($save,"$name\r\n"); 
fclose($save); 
mail("$email", "Fairview HiFi News Letter", "Welcome to the Fairview HiFi mailing list. Your exclusive source for product and promotional news and events.", 
    "From: [email protected]\r\n" 
    ."Reply-To: [email protected]\r\n" 
    ."X-Mailer: PHP/" . phpversion()); 
} 
?> 
+0

歡迎來到StackOverflow,@Matt! – Sampson 2010-01-28 16:59:46

+0

請查看http://www.phplist.com/以獲得可供使用的郵件列表應用程序,作爲自己滾動的替代方案 – Gordon 2010-01-28 18:22:36

回答

3

使用$_POST['email']$email

您的服務器已禁用註冊全局,這意味着表單輸入(和GET增值經銷​​商)都沒有在$formFieldName形式自動avaliable,所以你必須使用$ _ POST/GET/COOKIE/...

不要改變這個設置,如果你啓用了註冊全局變量,這是一個巨大的安全漏洞。

1

發佈的變量需要通過$_POST來引用。所以你的電子郵件將是:

print $_POST["email"]; 

而不僅僅是$email。此外,由於您正在添加新行,因此您可能會發現一個不太詳細的解決方案以吸引用戶。見file_put_contents()FILE_APPEND標誌:

​​
0

有幾個開源替代創建自己的郵件列表。 創建一個工業規模的郵件列表應用程序是一項不平凡的任務。 如果你想PHP的郵件列表腳本,你可以檢查出以下任一選項。 PHPList(http://www.phplist.com) 優點- •它內置了一個功能強大的所見即所得編輯器的電子郵件模板,使創建和部署通訊應用程序變得輕而易舉,即使對於沒有以前的PHP編程經驗的人也是如此。 •此外,它還支持RSS,列表分段,點擊跟蹤,附件反彈管理等功能。 Cons- •Buggy和難以自定義UI •難以自定義UI的外觀和風格以匹配現有網站

poMMO(http://www.pommo.org) 優點 •將訂購表單的外觀與現有網站的外觀相匹配或將訂購表單嵌入到現有網站網頁。 •WYSIWYG HTML郵件編輯器 •它還提供郵件發送的限制,並提供按小時,字節或域限制的選項。 •爲其他10種語言的本地化和支持,除英語外

OpenEMM(http://www.openemm.org)

優點 •在其他開源電子郵件訂閱列表管理器,如反彈沒有看到複雜的功能管理,鏈接跟蹤,實時統計和對腳本的支持。 •使用和支持領先的Java框架,如Hibernate,Spring和Struts。

Cons- •巨大的代碼庫可能導致較慢的頁面加載時間。 •如果只需要一個基本的電子郵件新聞簡報管理,可能會被視爲矯枉過正。 •可能不支持所有Web服務器。