创建邮件列表(PHP)

时间:2010-01-28 16:55:22

标签: php

我有一个网站,我有两个文本框用于输入信息。我的“提交”按钮命令PHP文件获取两个文本框中的信息,并将其复制/粘贴到名为“Members.txt”的文本文件中。目的是从文本框中获取信息并创建邮件列表。现在我的问题是我知道PHP文件正在调用文本文件,因为每次我点击提交时,我都可以在我的ftp上看到文本文件已被编辑,同时我尝试提交为分开列表。另外,文本文件试图将信息放入文本文件中,因为我可以看到每次点击“提交”按钮时,文本文件输入行都会越来越低。换句话说,输入完整的一行。但没有文字。不,文字不是白色的。我做错了什么?

<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: Newsletter@FairviewHiFi.com\r\n"
    ."Reply-To: NOREPLY@FairviewHiFi.com\r\n"
    ."X-Mailer: PHP/" . phpversion());
}
?>

3 个答案:

答案 0 :(得分:3)

使用$_POST['email']而非$email

您的服务器已禁用注册全局,这意味着表单输入(和GET变量)不能以$formFieldName的形式自动提供,因此您必须使用$ _POST / GET / COOKIE / ...

并且不要更改此设置,如果启用寄存器全局变量,这将是一个巨大的安全漏洞。

答案 1 :(得分:1)

已发布的变量需要通过$_POST引用。所以你的电子邮件将是:

print $_POST["email"];

而不仅仅是$email。此外,由于您要添加新行,因此您可能会发现一个不那么详细的解决方案。请参阅file_put_contents()并带有FILE_APPEND标记:

<?php
  $file = 'people.txt';
  // The new person to add to the file
  $person = "John Smith\n";
  // Append the contents of $person to the file named by $file.
  file_put_contents($file, $person, FILE_APPEND);
?>

答案 2 :(得分:0)

有几种开源替代方法可用于创建自己的邮件列表。 创建工业级邮件列表应用程序是一项非常重要的任务。 如果你想要php邮件列表脚本,你可以看看以下任一选项。 PHPList(http://www.phplist.com) Pros- •它内置了电子邮件模板和强大的WYSIWYG编辑器,即使对于没有PHP编程经验的人来说,也可以轻松创建和部署新闻稿应用程序。 •此外,它还支持RSS,列表分段,点击跟踪,附件反弹管理等功能。 缺点 - •Buggy并且难以自定义UI •难以自定义UI的外观以匹配现有网站的外观

poMMO(http://www.pommo.org) 优点 •可以非常轻松地将订阅表单的外观与现有网站的外观相匹配,或将订阅表单嵌入到现有网页中。 •WYSIWYG HTML邮件编辑器 •它还提供发送邮件的限制,并提供按小时,字节或域限制的节流选项。 •为除英语以外的其他10种语言提供本地化和支持

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

赞成 •其他开源电子邮件订阅列表管理器中未见的复杂功能,例如退回管理,链接跟踪,实时统计和脚本支持。 •使用和支持领先的Java框架,如Hibernate,Spring和Struts。

缺点 - •庞大的代码库可能会导致页面加载时间变慢。 •如果只需要基本的电子邮件通讯管理,可能会被视为过度杀伤。 •可能不受所有Web服务器支持。