确认电子邮件与激活链接然后存储在文件中,如果有效的PHP

时间:2012-06-07 18:22:24

标签: php perl cgi

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

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

  1. 一个人通过表格提交他们的电子邮件地址。
  2. 然后将电子邮件(临时)存储在flatfile数据库(temp_emails.txt)中
  3. 然后,此人会收到一封自动回复电子邮件,其中包含确认其电子邮件地址的链接。
  4. 点击链接确认后,他们的电子邮件地址就是 保存到新文件。
  5. (例如,confirmed_emails.txt)。

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

    如果没有SQL /类似数据,这可能吗?

    干杯〜

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

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

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

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

然后只是根据链接中的哈希重新哈希链接中​​的电子邮件地址,如果匹配,则表明您已确认电子邮件地址。

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