データファイルから情報を読み込む

このQ&Aのポイント
  • 会員制掲示板の改造方法について相談です。
  • ログイン時に自動的に情報を表示する方法を知りたいです。
  • データファイルから該当するIDの人のデータを読み込む方法がわかりません。
回答を見る
  • ベストアンサー

データファイルからの情報の読み込みについて

現在、会員制の掲示板(Perl)を作成しています。 お名前、ご希望のID、メールアドレス、パスワードを入力して会員登録し、掲示板へはIDとパスワードでログインできるようになっています。 この掲示板を改造しようとしています。 会員制で投稿する人も限られているため、投稿フォームの名前やメールアドレス等は自動で入力されるようにしたいのです。 一度投稿するとCookieに保存されるというのではなく、<input type="text" .....>という入力欄を使用せずに強制的に(書換え不可能)ログイン者の名前等が表示されるようにしたいのですが…。 ちなみにスキンファイルを使用するタイプの掲示板なのですが、ログインする時にIDとパスワードを入力するためにIDの情報は持っているようで、IDでしたら表示させることはできたんですが、メールアドレスなど、ログイン時に入力していない情報は表示できません。 …ということは、ログインした後、もしくは書き込みをしようとする前に「データファイルから該当するIDの人のデータを探して読み込む」という指示をすれば良いのでしょうが、それがわかりません。 未熟な私にはわかりません! お詳しい方、どうか助けてください!お願いします!

  • CGI
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

IDが取れているのでしたら、会員ファイルを開いてIDを検索してメールアドレスなどを引っ張ってくればできます。 具体的なことはデータ形式が分からないとできませんが、 open(IN,"データファイル); @data = <IN>; close(IN); foreach (@data) { # カンマ区切りデータ (@_) = split(/\t/); if ($id eq $_[0]) { $name = $_[1]; $mail = $_[2]; last; } } とかやればいいのですが。 この辺も理解できない場合はその掲示板を壊すだけなので辞めたほうがいいかと思います。

ruristar
質問者

お礼

ご連絡が遅くなってしまい申し訳ございません。 質問させていただきました掲示板は、職場で作成しているものなのですが、外部からはサーバーにはアクセスできず、自宅ではCGIの動作の確認ができる環境もございませんので、仕事中しか作業できません。 (そのうちどこかのレンタルサーバーを借りたいです。そうすれば自宅でもいじれますので) 他の仕事に追われ、取り掛かれずにおりました。 その後、色々いじってみたのですが、元の掲示板のプログラムには様々な機能が盛り込まれており、1ヶ所いじると他の場所に影響が出てくる状態で、なかなかエラーが止まりません。私のレベルでは非常に時間がかかりそうです。 元々Cookieを使用するようになっており、一度掲示板に書き込むと次からはそれらが自動で入るようになっておりますので、とりあえずはそれで運営したいと思います。 それですと毎回違う名前で投稿することもできてしまいますので偽名も使えてしまいます。(そんなことをするような人はもともとメンバーに居ないとは思いますが) できれば登録時の名前でしか投稿できないようにしたいと思いますので、余裕があったら途中で切り替えるということも検討したいと思います。 今回はご回答いただきましてありがとうございました。

ruristar
質問者

補足

アドバイスありがとうございます! ちょっと他に急ぎの仕事が沢山入ってしまいまして、まだこちらの方の確認はできていないのですが(また後でご報告します)、とりあえず現況をお知らせいたします。 データはタブ区切りデータで、ソースは以下のようになっています。 ------------------------------------- sub auth{ my ($sys,$form) = @_; Cgi::getcookie($$form{"bbsname"}."auth",$form); my ($flag,$useflag) = (0,0); if ($$form{"authid"} eq "root"){ ($flag,$useflag) = (1,1) if $$sys{"adminpass1"} eq crypt($$form{"authpass"},$$sys{"adminpass1"}) || $$sys{"admin_ps1"} eq $$form{"authpass"}; }else{ open(IN,"$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}") || main::errormsg("01","$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}"); seek IN,0,0; binmode IN; while (<IN>){ my @f = split "\t",$_,5; if ($f[0] eq $$form{"authid"} && $f[2] eq crypt($$form{"authpass"},$f[2])){ ($flag,$useflag) = (1,$f[4]); chomp $useflag; last; } } close IN; } if (!$flag){ my %cook = (); Cgi::getcookie($$form{"bbsname"}."authc",\%cook); my %skin = ( "authid" => $cook{"authid"}, "authpass" => $cook{"authpass"}, "script_name" => $$sys{"script_name"}, "ut" => $$sys{"ut"}, "st" => $$sys{"st"}, "bbsname" => $$form{"bbsname"}, "mode" => $$form{"mode"}, "no" => $$form{"no"}, "oyano" => $$form{"oyano"}, "errmsg" => $$form{"authid"} || $$form{"authpass"} ? "ID又はPASSWORDが違います。" : "" ); print "Set-Cookie: $$form{'bbsname'}auth=;\n"; browse($$sys{"moji_code"},$$sys{"gzip"}); print Skin::new("$$sys{'adminskin_dir'}/auth.html")->replace("main",\%skin); exit; }else{ if (!$useflag){ open(IN,"$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}") || main::errormsg("01","$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}"); open(OUT,">$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}.$$sys{'rand'}") || main::errormsg("02","$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}.$$sys{'rand'}"); seek IN,0,0; seek OUT,0,0; binmode IN; binmode OUT; while (<IN>){ my @f = split "\t",$_,5; print OUT $$form{"authid"} eq $f[0] ? "$f[0]\t$f[1]\t$f[2]\t$f[3]\t1\n" : $_; } close OUT; close IN; chmod $$sys{"file_permission"},"$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}.$$sys{'rand'}"; rename "$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}.$$sys{'rand'}","$$sys{'bbsname_dir'}/$$form{'bbsname'}/$$sys{'user_file'}"; } print "Set-Cookie: ".Cgi::setcookie($$form{"bbsname"}."auth","",\"authid:$$form{'authid'},authpass:$$form{'authpass'}"); print "Set-Cookie: ".Cgi::setcookie($$form{"bbsname"}."authc",60,\"authid:$$form{'authid'},authpass:$$form{'authpass'}"); } }

関連するQ&A

  • セブンアンドワイについて

     4月の始めにセブンアンドワイの会員になりました。    そして今日本を注文しようと思い、ログインしようとしたら入力情報が正しくないと表示されました。IDとパスワードの両方を正しくメモしておいたので、間違っていないと思います。    しかしログインできなかったので、始めにIDの確認をするため、「IDを忘れてしまった方へ」のところで登録しておいた生年月日、郵便番号、メールアドレスを入力したところ、正しくないと表示されました。初めて登録したときに登録情報を何度も見直したので、間違っていないはずなのですが…。またメールアドレスの変更もしていません。  IDが分からないとパスワードの確認も出来ないので困っています。また一度退会しようと思い、退会手続きをしようとしたら、やはり登録情報が違っていると表示されました。  ここで質問なのですが、登録情報が消えてしまうことってあるのでしょうか。また、このまま再び会員登録しても大丈夫なのでしょうか。  長文ですみません。ご回答お願いします。

  • webログイン情報のリセットについて

    ログインが必要なwebサイトにログインしようとしています。そのサイトはログインIDは数字です。しかし何故かログインID欄に自動的にメールアドレスが入力されています。メールアドレスを消してログインIDとパスワードを手入力してもログインボタンを押した瞬間にまた自動的にメールアドレスが入力されてログインIDが不正でログインできません。パソコンのどこかに間違った情報が保持されているのだと思いますが、どこに設定されているのかとリセットする方法がわかりません。 どのようにすればいいでしょうか?

  • サイトの顧客情報について

    ショッピングサイトの会員登録について質問です。 何年も前に個人情報を登録したショッピングサイトに 久々にログインしようとしたら、 「ID、または、パスワードが違います・・・」のメッセージが出て ログインすることができませんでした。 ならばとパスワードの再発行をしようとしても 「登録されていないメールアドレスです」と表示されてしまいます。 IDやパスワードはメモ帳に控えているのですが、 それでも間違っている可能性はあると思います。 ただ、何年もログインしていないと、店側から顧客情報を削除してしまうと いうことはあるのでしょうか? 今回は8年くらい前に一度だけ買い物したサイトに入れませんでした。 ちなみにクレジットカードなどの情報は登録していません。

  • PHPによる会員情報管理システムについて

    XAMPPを利用してのPHPで会員情報管理システムを急ぎで作成しているとこです。 会員ID・パスワード・その他個人情報を入力し、データの新規作成(CSV形式での外部ファイルへの書込み) 後に、会員IDを入力しての      ★検索(現IDと入力したIDと一致すれば、現データを画面表示。見つからなければエラー表示)      ★削除(現IDと入力したIDと一致すれば、現データを画面表示→削除ボタンを押すと「削除完了しました」と表示(外部ファイルの中身も消去))      ★変更(現IDと入力したIDと一致すれば、データを再入力するための入力画面を表示→変更ボタンが押されれば変更したデータを画面表示(外部ファイルも書き換えられている)) この四つの処理が可能なページを作成しなければならないのです 新規作成まではいけたのですが・・・ 残り三つの  検索・変更・削除 の処理のソースの書き方が全くわからないで(=x=) 助言を求めます(汗 それと皆様がこういう困ったときに見る情報サイトなどあれば教えて欲しいです。

  • データファイルをダウンロードできない

    データファイルをダウンロードできない こんにちは ホームページを知人に教わりながら作っているのですが、色々なデータファイルを送ってもらってこちらのパソコンにダウンロードすることがあります。 Windowsセキュリティ画面が出てきて指定されたID・パスワードを入力して、たいていはそのままそのデータをダウンロードできるのですが、時々指定されたものを入力してもまた入力画面に戻ってしまいます。 キャンセルをすると英語でパスワードが間違っているかサイトアドレスが違う のような文章になります。 ファイル的には.zip .pdf などです。 知人は同じパスワードでアクセスできるので入力間違いではないと思います。 こちらのパソコンの設定がおかしいのか ファイルが壊れているのか よく判りません。 OS Windows7 IE8で開こうとしています。 初心者に近いので、他にどの情報をお伝えしたらいいか判りません。 この説明で分かるでしょうか? よろしくお願いいたします。

  • its-mo Naviの会員ページログインできません

    ゼンリンデータコム発売の地図ソフトのits-mo Naviのホームページの 会員ページでID・パスワードがあっているのにログインできません。 「パスワードを忘れた方」でメールアドレスを入力して「次へ」を クリックしても、「入力項目に該当するユーザーが見つかりませんでした。」と表示されてしまいます。何ヶ月間かログインしないと削除されてしまうのですか? 前はログインできていて突然ログインできなくなってしまいました。 宜しくお願いします。

  • OKWaveログインについて

    ・パスワードは分かるが会員IDが分からない ログイン時には「会員IDとパスワード」の組み合わせの他に 「登録メールアドレスとパスワード」によるログインが可能です。 会員IDがご不明な場合は「登録メールアドレスとパスワード」にて ログインをお試しください。 FQA<よくある質問>に書いてあったのですが、 どのようにして、ログインするのでしょうか?

  • Yahooメール ログインできない

    Yahooメールにログインできなくなってしまいました。 このトラブルの前に、Yahooオークションのメールアドレスを変更しようと思い、 「登録情報の確認」→「メールアドレス情報」→「編集」→「メールアドレスを追加」で、 新しく使用したいメールアドレスを入力したのですが、「入力したドメインはご利用になれません。 別のメールアドレスを入力してください。」のエラーメッセージが表示されました。 入力したメールアドレスは正しいものです。 それから、新しく使用したいメールアドレスでの送受信ができなくなってしまいました。 ログインしようとすると、「Yahoo!JAPAN ID またはパスワードが正しくありません。」 と表示されてしまいます。メールアドレスもパスワードも正しいものです。 メインで使っているアドレスなので大変困っています。 どなたか助けていただけないでしょうか。 よろしくお願いします。 ちなみに、このトラブルの直前に、Yahooオークション会員退会をしておりますが、 それが関係あるかどうか不明です。

  • NEXONにログインできません・・・

    メイプルストーリーをやっているのですが、 このたび簡単会員では9月後半には遊べなくなるとのことで、 正式会員への移行が必須になったため、手続きを行おうと思っていたのですが、 NEXONにログインができません。 メイプルストーリーでは定期的に遊んでいましたが、 NEXONのIDや、パスワードの変更、サイトにログインなどは数年間行っていません。 もしかしたらNEXON IDや、パスワードが間違っているのかと思い、 「NEXON IDを忘れた場合」にて、メールアドレス等を入力し、NEOXN IDの確認をしました。 次に「パスワードを忘れた場合」で、NEXON IDとメールアドレスを入力しましたが、 「メールを送信できませんでした。」と表示されてしまいます。 仕方がないので、「メール認証サービスに登録されていない方」で、NEOXN ID等で本人確認をし、 パスワードの再設定をしましたが、そのパスワードを使用してもログインすることができません。 ログインすることができずに、サポートに問い合わせもできない状況です。 ご回答のほうどうぞよろしくお願いいたします。

  • ログイン認証のかけかたについて

    ファイルメーカーで、ログインをすると個人の入力画面へ飛ぶような仕組を作りたいと思っています。 そこで、用意しているファイルが以下3つあります。 (1)【ログインファイル】→フィールド:メールアドレス、パスワード (2)【個人情報ファイル】→フィールド:メールアドレス、パスワード、部署、名前、社員番号 (3)【一般入力画面】→フィールド:社員番号、と用意しております。 この3つのファイルを使って認証をかけようと思っています。 【ログイン】すると個人の入力画面にとぶイメージです。その方法として以下のように考えております。 【ログインファイル】で入力したメールアドレスとパスワードと【個人情報ファイル】のメールアドレスとパスワードが一致した場合、【個人情報ファイル】のそのレコードから社員番号を【一般入力画面】の社員番号へコピペして、一般入力画面に、リレーションか何かで部署・名前を表示させたいと思っています。何度か試しているのですが上手くいきません。何かいい方法があったらご指導頂けますでしょうか。よろしくお願い致します。

専門家に質問してみよう