同じアドレスの重複登録を防止
アンケートやプレゼント等の応募を受け付けるためにフォームを利用することがあると思いますが、何度も同じ人が応募してくるのは困りものです。
しかし、CGIにちょっと手を加えるだけで簡単に同じアドレスの登録を防止することができます。
仕組みを簡単に説明しますと、WEBサーバー側に暗号化した状態のメールアドレスのリストを用意して、フォームから入力されたメールアドレスをリストと照合するというものです。
もちろん、フォームから入力されたメールアドレスは、そのままでは暗号化されたリストと照合できませんので、入力されたメールアドレスも暗号化して、暗号化したもの同士で照合するわけです。
サーバーにあるのは暗号化したメールアドレスですから、万一盗まれるようなことがあっても安心です。
暗号化というと難しい気がしますが、perlで書いたコードを紹介します。
$emailという変数にメールアドレスが入っています。
usermail.datというテキストファイルが暗号化したメールのリストです。
----- ここから --------------------------------------------------------
# ファイルを変数に代入します。
$maillist = "usermail.dat";
# メールアドレスをcryptを使ってabというキーで暗号化します。
$cryptemail = crypt($email,
"ab");
# メールアドレスが既に登録されていないかをチェック
open(FILE, "$maillist");
@allbody = <FILE>;
foreach $line (@allbody){
chop $line;
if($line eq $cryptemail){
# 同じメールアドレスが見つかった時の処理を書きます。
# ここでは、$flagという変数に1を代入しています。
$flag = 1;
}
}
close(FILE);
----- ここまで --------------------------------------------------------
----- ここから --------------------------------------------------------
# メールリストに暗号化したメールアドレスを登録する。
open(FILE, ">>$maillist");
print FILE "$cryptemail\n";
close(FILE);
----- ここまで --------------------------------------------------------
暗号化したメールアドレスは以下に示した例のように書き込まれます。
nbJPGIsCWnqiI
nbsW8uyNCZc9s
nbuxa6A7ydEEY
ご身の使っているフォームメールで重複チェックを行いたい場合は、是非組み込んでみてはいかがでしょうか。