2010-01-28 99 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服务器。