1

この質問は何度も聞かれていることは承知していますが、フラットファイルバージョンはまだ見つかりません。

PHPまたはCGI-PERL、できればPHPで次のことを実現する方法を探しています。

  1. ある人がフォームを介して自分の電子メールアドレスを送信します。
  2. その後、電子メールはフラットファイルデータベース(temp_emails.txt)に(一時的に)保存されます。
  3. 次に、その人は自分の電子メールアドレスを確認するためのリンクが記載された自動返信電子メールを受信します。
  4. リンクをクリックして確認すると、メールアドレスが新しいファイルに保存されます。

(たとえば、confirmed_emails.txt)。

私が考えた1つの方法は、ある種の「オプトイン」方式です。

これは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>

次に、リンクのメールアドレスをリンクのハッシュと照合して再ハッシュします。一致する場合は、メールアドレスを確認します。

(なぜデータベースに保存したくないのか非常に興味がありますが、おそらく、それらを使って何か役立つことができるように、アドレス指定された電子メールを1つに保存する必要がありますか?)

于 2012-06-07T18:28:39.583 に答える