CGI-BBS > データベース > 簡易データベース > メールアドレスを重複登録するのを防ぎたい。


カレッヂ
カレッヂ


質問者 TAKA  投稿日 8/15(木) 18:15:23
以前にも書き込みがあったのですが同じメールアドレスの二重登録を防ぎたく
AUTOPWDプログラムを参照して作っていますがうまくいきません。

よろしくお願いします。

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:(未選択)
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:(未選択)

回答者 やまだ  [削除]  投稿日 8/16(金) 00:14:44
データベースファイルに書き込む前に、以前のメールアドレスに一致しているものはないかどうか
確認するようにすれば、よいと思います。
その参照してつくった部分だけでも分かれば、アドバイスのしようもあります。
質問者 TAKA  [削除]  投稿日 8/16(金) 10:01:57
お返事ありがとうございます。
以下のような入力チェックを入れてみたのですが・・。
ご指導よろしくお願いします。


#入力チェック

if ($FORM{'NAME'} eq '') { &error('入力エラー','名前を入力してください.','ブラウザの[戻る]ボタンを押して前の画面に移動してください.'); }
if (!($FORM{'EMAIL'} =~ /(.*)\@(.*)\.(.*)/)) { &error('入力エラー','Eメールは半角で正しく記入してください.','ブラウザの[戻る]ボタンを押して前の画面に移動してください.'); }

if (!open(DB,$file)) { &error('システムエラー','パスワード管理ファイルにアクセスできません.','復旧するまでお待ちください.'); }
@MAIL = <DB>;
close(DB);

@PICKUP = grep(/^$FORM{'EMAIL'}\:(.+)$/,@MAIL);
if (@PICKUP) { &error('登録済み','既に登録されています.','ブラウザの[戻る]ボタンを押して前の画面に移動してください.'); }
回答者 やまだ  [削除]  投稿日 8/17(土) 00:10:23
えーと、まず、格納したデータの形をもうすこしよくみてましょう。
commaでくぎるcsvですよね。そこに注目してみるとうまくいくかもしれません。
例えば、そちらのコードをちょっといじって、

open(DB,$file) or  &error('システムエラー','パスワード管理ファイルにアクセスできません.','復旧するまでお待ちください.');
@MADDRS=map{(split',',$_)[3]}<DB>;
close DB;

@PICKUP=grep(/^$FORM{'EMAIL'}$/,@MADDRS);
@PICKUP and &error('登録済み','既に登録されています.','ブラウザの[戻る]ボタンを押して前の画面に移動してください.');
質問者 TAKA  [削除]  投稿日 8/17(土) 11:50:46
ありがとうございます。無事できました。
勉強しはじめたばかりなのでわからないことだらけなのですが
教えていただいたソースを今からじっくり解読していきたいと思います。

このページは終了したので返信(回答)は書きこめません

Web裏技