• 締切済み

メールアドレス登録の重複をチェックするには?

お世話になります。 http://www.webpower.jp/ 上記のサイトで配布されている、「ユーザー・マネージャー」と言うアクセス制限するユーザーを管理するCGIを使いたいと思っています。 http://www.webpower.jp/websofts/password_protection/user_manager/ このCGIは、重複ユーザーの登録をチェックする事はできるのですが、メールアドレスの重複チェックはできません。 すでに登録されているメールアドレスでの、ユーザー登録拒否するにはどうすればよいでしょうか。 「user.cgi」ファイルの、1416行目、1780行目あたりに「ユーザー名[$username]は既に登録されています。他のユーザー名を指定してください。」と、同じユーザー名での登録をチェックしている箇所があります。 --------------------------------------- while (<IN>) { my($username) = (split /$SP/, $_, 2)[0]; if ($SIO{'username'} eq $username) { push @err_msg, "<b>ユーザー名[$username]は既に登録されています。他のユーザー名を指定してください。</b>"; last; } } close IN; --------------------------------------- このあたりが怪しいと思い、いろいろと試してはみたのですが、perlの知識がないためにネットでsplit関数を調べて3時間ほどいろいろと試してみたのですが、うまくいきませんでした。 ユーザー情報が登録されているファイルには下記のように、ユーザー情報が記載されています。 ------------------------------------- test10(タブ)qWsI4uXjDR2gU(タブ)hogehoge@mail.goo.ne.jp(タブ)1196066232(タブ)1196066232(タブ)1196066232(タブ)0 test9(タブ)6VAGp2TV8SV4w(タブ)hogehoge2@mail.goo.ne.jp(タブ)1196066806(タブ)1196066806(タブ)1196066806(タブ)0 test11(タブ)I75tuntVNvzjk(タブ)hogehoge3@mail.goo.ne.jp(タブ)1196071653(タブ)1196071653(タブ)1196071653(タブ)0 ------------------------------------- 上記のように、タブ区切りになっています。 左から、ユーザー名、パスワード(暗号化されている)、メールアドレス、初回登録日時、最終更新日時、最終認証日時、認証回数となっています。 登録済みのメールアドレスを、ユーザー名と同じように重複して登録しないようにチェックしたいのですが、どのようにすれば良いでしょか。 ご教授をお願い致します。

  • Perl
  • 回答数4
  • ありがとう数2

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

昨日はちといろいろあったので書けませんでした。すみません。 #実は別のところで回答してたりしたんですが >「# ■ 登録内容を変更する」の項目内に下記の記述があります。 ちょっと修正後のコードがどうなったのか判断しづらいところがありますね > 上記の記述のすぐ上の箇所に、下記のように記述しました。 とあるんですけど、 #------------------------------------ #メールアドレスの重複登録をチェック if (-f $USER_FILE) { while (<IN>) { my ($username, $mail) = (split /$SP/, $_, 4)[0,2]; if ($SIO{'new_mail'} eq $mail) { push @err_msg, "<b>メールアドレスは既に登録されています。他のメールアドレスを入力して下さい。</b>"; last; } } } close IN; #-------------------------------------- while (<IN>) { ($username, $password, $mail) = split /$SP/, $_, 4; みたいな感じになってますか? だとすると、while (<IN>) ではファイルからの読み込みをしているので、 後ろの方の while ループの本体は実行されません。 配布もとのスクリプトから見るのは勘弁してもらいたいんですが、 時間をもらえれば多少融通を利かせられなくもないですけど。

mintroll
質問者

お礼

お返事が遅れてしまい、申し訳ありません。 >配布もとのスクリプトから見るのは勘弁してもらいたいんですが、 申し訳ありませんでした。 私が利用しようとしているスクリプトを、分かる人が見ればすぐに解決方法が分かるのかと思い、配布もとのスクリプトを記載させて頂きました。 アドバイスを拝見させて頂く限り、簡単にメールアドレスの重複チェックができなそうなので、諦めようかと思っています。 いろいろとありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

すみませんわたしも超能力者じゃないんで、せめてどんなエラーになったか くらいは補足してもらえませんでしょうか?

mintroll
質問者

補足

大変申し訳ありません。 「# ■ 登録内容を変更する」の項目内に下記の記述があります。 #------------------------------------ while (<IN>) { ($username, $password, $mail) = split /$SP/, $_, 4; #------------------------------------ 上記の記述のすぐ上の箇所に、下記のように記述しました。 #------------------------------------ #メールアドレスの重複登録をチェック if (-f $USER_FILE) { while (<IN>) { my ($username, $mail) = (split /$SP/, $_, 4)[0,2]; if ($SIO{'new_mail'} eq $mail) { push @err_msg, "<b>メールアドレスは既に登録されています。他のメールアドレスを入力して下さい。</b>"; last; } } } close IN; #-------------------------------------- 「$mail」は「$mailaddr」にしても、エラーはおこりませんでしたが、メールアドレスの重複チェックは動作しているようです。 ですが、なぜか登録されているはずのユーザー名が、登録されていないとエラーが表示されます。 ユーザー名のチェックしている記述は、下記の通りになっています。 #-------------------------------------- # ユーザー名が見つからない if (!$flag) { push @err_msg, "<b>ユーザー名[$SIO{'username'}]は登録されていません。</b>"; } #-------------------------------------- まとめると、登録されているユーザー名を使用して、メールアドレスの変更をしようとすると、メールの重複チェックは動作しているものの、ユーザー名が無登録と判断されてしまいます。 アドバイスを御願い致します。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

すみません。訂正です。 >my ($username, $mailaddr) = (split /$SP, $_, 4)[0,3]; 最後のブラケットの中は[0,2]です。

mintroll
質問者

お礼

sakusaker7 様、的確なアドバイスをありがとうございます。 my ($username, $mailaddr) = (split /$SP/, $_, 4)[0,2]; 上記のように記述する事で、メールアドレスの重複登録のチェックをする事ができました。 また、1度ユーザー登録している人が登録しているメールアドレスを変更する場合も、メールアドレスの重複チェックをしようと思い、同じように記述してみましたが、どうにもうまく行きません。 「user.cgi」の中の480行目あたりにある、「■登録内容を変更する」のところに、いろいろとチェックする記述があるようです。 #------------------------------------------------------------------------------- # ■ 登録内容を変更する # # 呼出元 : main # 引 数 : (冒頭メッセージ) # 戻り値 : (終了) #------------------------------------------------------------------------------- ここに下記のように記述してみました。 #------------------------------------ #メールアドレスの重複登録をチェック if (-f $USER_FILE) { while (<IN>) { my ($username, $mail) = (split /$SP/, $_, 4)[0,2]; if ($SIO{'new_mail'} eq $mail) { push @err_msg, "<b>メールアドレスは既に登録されています。他のメールアドレスを入力して下さい。</b>"; last; } } } close IN; #-------------------------------------- 「$mail」を「$mailaddr」にすると、エラーが出て動作しなくなります。 自分なりにいろいろと試してみましたが、うまくメールアドレスの重複チェックをする事ができません。 引き続きお手数をおかけしますが、ご教授を頂けると助かります。 よろしくお願い致します。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

>my($username) = (split /$SP/, $_, 2)[0]; my ($username, $mailaddr) = (split /$SP, $_, 4)[0,3]; で $mailaddr にメールアドレスが入ります。 後は煮るなり焼くなりお好きにどうぞ。

関連するQ&A

  • CSVファイルにあるメールアドレスの重複チェック

    初めて投稿させていただきます、perl初心者です。 イベントの登録とデータ集計がしたくて、色々なメールフォームCGIを 比較検討しております。 今評価中のプログラムはデータをCSVにかき出してくれるのですが、メールアドレスの重複チェックが付いていません、そこでこのプログラムにメールチェック機能を追加したいと考え、色々見て廻ったのですが、良く分かりませんでした、 頭の中では書き出されたCSVファイルを読み込んでメールの列だけ抜き出し、それをチェックすれば良いのかなと考えています。 perlの本やohzakiさんのPerlメモ等も見ましたが良く分かりません。 何方か分かりやすく教えて頂けると助かります。

    • ベストアンサー
    • Perl
  • 買い替えたPCのメールアドレス登録

    先日、PCが壊れてしまい新しく買い替えました。 そこで新しいPCに今まで使っていたPCのメールアドレスをoutlookに登録しようと思いました。 しかし電子メールサーバーの設定を構成するところで、「サーバーの設定の検索」のところまでは緑色のチェックが付くのですが 「サーバーにログオンしてテストの電子メール メッセージを送信」というところでユーザ名・パスワードを入力する画面が出てき、正しく入力したにもかかわらず赤い×印がついて失敗してしまいます。 これはどういうことなのでしょうか?

  • 登録メールアドレスが認証できない

    Yahooオークションを利用するのにIDと メールアドレスを登録しました。 メールアドレスは例えば***@yahoo.co.jpで登録し オークション用に使う登録メールアドレスは ***@ybb.ne.jpで登録しました。 ***@ybb.ne.jpのアドレスが未認証なので「認証メールを 送信」ボタンをクリックしたのですがメールが 届きません。 この***@ybb.ne.jpのアドレスに届くメールは どうやって見るのですか? 一緒に登録した***@yahoo.co.jpの方には認証メール 届いてません。 どこをクリックすれば***@ybb.ne.jpに届いた メールを見ることができますか?

  • メールアドレス2つ?

    全くのパソコン初心者です。今現在、MSNのHOTmailを使っています。ユーザーの登録をしたときにメールアドレスをもらいました。プロバイダーからもらったメールアドレスはどうなっているのでしょうか?携帯からメールを送ってテストしたのですが、HOTmailでもらったアドレスにはちゃんと届くのですが、プロバイダーからもらったアドレスには届きません。(ちゃんと時々outlookをチェックしてるのですが・・) 「こんな基本的なことを・・・」という質問かもしれませんが、ずっと気になっていたので、回答ください。

  • アドレスを重複させずに表示したい

    MYSQLは初心者なので教えてください。 アドレス,名前,都道府県 *****@*****,大木.福岡県 みたいな形式でmysqlのデータベースに アドレスと名前、都道府県が登録されています。 アドレスも名前も都道府県も重複されて登録されている 可能性があります。 福岡県の人にメールを送りたいので、検索する場合 SELECT * FROM `テーブル名` WHERE `Prefecture` = '福岡県' だとアドレスが重複している可能性があります。 このままメールを送るとメールが2回送られてしまう可能性が あります。 かといって SELECT DISTINCT `address` FROM `tyokusetusoudan` WHERE `Prefecture` = '福岡県' だと名前や都道府県名が表示されないので困っています。 アドレスを重複させずに名前や都道府県も表示するように 検索したいのですが、どうすればいいのでしょうか?

    • ベストアンサー
    • MySQL
  • 出会い系の重複登録

    おこづかいサイトの登録で、無料登録の出会い系に登録しました。 その出会い系が重複登録で、他のサイトからのメールも日増しに増え その中の1通「続きを確認」でサイトにアクセスしてしまいました。 メールをみたので-10ポイントとなり、昨日100円の請求がメールできました。番号とアドレスを知られています。 重複登録なので利用規約等読んでいませんでした。サイト名を書いてしまっていいのかわからないので伏せておきますが、 「出会いをスムーズにするため、ポイント不足分は自動的に後払い清算」と書かれていました。ただ不明なのが、男性からのメールは来るのにサイト自体にログインすることができないのです。重複なので当たり前かと思いますがパスワードがありません、メールでパス請求しても送られてきません。 しばらく無視し、100円ですし払ってしまってもいいのでアドレスを変えて、今後は一切かかわらないようにしようと思うのですが・・・ 連鎖でかなり多くのサイトに登録されたみたいです。他はすべて無視しているので請求等ありませんがアドレスを変えただけですっきり終われるものでしょうか?退会申請等いちいちする必要はないですよね? 以後本当に注意していきます。すみませんが、アドバイスいただきたいです。

  • twitterのアカウントを削除し、再度登録したらメールアドレスが使用

    twitterのアカウントを削除し、再度登録したらメールアドレスが使用できなくなってしまいました。 その後、ヘルプを見てみたら 「このアカウントに登録したユーザー名やメールアドレスを他のアカウントに登録したい場合は、アカウントを削除する前にユーザー名やメールアドレスを別のものに変更してください。ユーザー名やメールアドレスを変更しないままアカウントを削除してしまうと、そのユーザー名やメールアドレスを新しく作るアカウントに登録できなくなってしまいます。 」 と表示されました。 仕事があるのでメールアドレスは変更できません。 時間が経っても、再度登録はできないのでしょうか? 同じような体験をした方がいらっしゃったら教えてください。

  • 存在しないメールアドレスかどうかのチェック

    PHPのNet_SMTPにて、メール送信するプログラムを作成しています。 http://pear.php.net/manual/ja/package.networking.net-smtp.php を参照して作成しているのですが、 存在しないメールアドレスかどうかのチェックは可能でしょうか? ユーザーが誤ったメールアドレスを設定していた場合、 システムはそのメールアドレスにメール送信するのですが、 当然誤ったメールアドレスなので、ユーザーには届きません。 このような事を回避するために、 システムがメールを送信する際に、 この世に存在するアドレスかどうかチェックする術はあるのでしょうか? 返却されたメールを解析するしか無いのでしょうか… ※.アドレス内に「@」が無いなどのチェックではなく、   存在するアドレスかどうかのチェックが可能かどうかになります。

    • ベストアンサー
    • PHP
  • アカウントプライバシーのメールアドレス登録について

    アカウントセキュリティにメールアドレスを追加しようとして何度か認証メールを受信出来ず、サポートを見て迷惑メール等、確認しても無かった為、再度登録し直そうと登録しようとしていたメールアドレスを一旦削除したせいか、認証メールを送る事自体が出来なくなり、結果的に登録できずにいます。 また、その認証メールを送信しようとメールアドレスを登録し直しても「本メールアドレスの追加が禁止されました。別のメールアドレスを追加して下さい。」と出てしまうのは、どうすれば解除して登録できますか?回答、アドバイスを宜しくお願い致します。 ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • メールアドレス登録CGIを設置したい。

    携帯へのメールマガジンを発行したいので、PCサイトから携帯電話のメールアドレスを登録できる仕組みを作りたいのですが、CGIを探してもみつかりません。 どこかにメールアドレスを登録してログにして保存できるようなCGIはないでしょうか? ソースを載せていただいても結構です。

    • ベストアンサー
    • CGI

専門家に質問してみよう