我有一个网站,我有两个文本框用于输入信息。我的“提交”按钮命令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"> </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());
}
?>
答案 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服务器支持。