1

我意识到这个问题已经被问过很多次了,但我还没有找到一个平面文件版本。

我正在寻找一种在 PHP 或 CGI-PERL 中实现以下目标的方法,最好是PHP:

  1. 一个人通过表格提交他们的电子邮件地址。
  2. 然后将电子邮件(临时)存储在平面文件数据库(temp_emails.txt)中
  3. 然后,此人会收到一封自动回复电子邮件,其中包含用于确认其电子邮件地址的链接。
  4. 通过单击链接进行确认后,他们的电子邮件地址将被保存到一个新文件中。

(例如confirmed_emails.txt)。

我想到的一种方法是某种形式的“选择加入”方法。

如果没有 SQL 或类似的数据库,这可能吗?

4

2 回答 2

3

这是可能的。

将电子邮件写入 temp_emails.txt 文件时,像这样打开它:

$f = fopen('temp_emails.txt', 'a+'); // open for read/write at end of file
fwrite($f, $email); // write the email to the file
fclose($f); // close it
// send new email

他们得到了他们的链接 confirm.php?email=xyz@abc.com

// first check if they already confirmed it
$file = file('confirmed_emails.txt');
if(!in_array($email, $file)){
    // not in file
    $f = fopen('confirmed_emails.txt', 'a+');
    fwrite($f, $email);
    fclose($f);
}else {
    // already confirmed
}
于 2012-06-07T18:28:32.610 回答
1

我认为您可以在不存储任何内容的情况下进行管理,即使在文本文件中也是如此。

当您生成要通过电子邮件发送给用户以进行确认的唯一代码时,请通过散列您要发送到的电子邮件地址来创建它,并具有以下格式的链接:

http://www.example.com/confirm.php?email=<emailaddress>&confirm=<hashedemail>

然后只需根据链接中的哈希值重新对链接中的电子邮件地址进行哈希处理,如果它们匹配,则您已确认电子邮件地址。

(虽然我很好奇您为什么不想将其存储在数据库中 - 大概您需要将电子邮件地址存储在一个数据库中,以便您可以对它们做一些有用的事情?)

于 2012-06-07T18:28:39.583 回答