テキストファイルにかかれているパスワードと、画面から入力されたパスワードと一致しているかをチェックするには?

[上に] [前に] [次に]
まりこ 1999/11/19(金) 20:23:58
テキストファイルにパスワードとユーザーIDを書いておいて、
それをHTML画面の入力ボックスの入力値と比較させたいのですが、
どうすればいいのですか?
テキストファイルの中は、ユーザー名、パスワードの順で
tomoe,ABCD
mayumi,6666
というふうに書いてあります。

Nobu3 1999/11/19(金) 21:34:07
CGIで、かつPerlでの話なら、フォームからの情報は
http://www.tohoho-web.com/cgi-bin/wwwperl.txt
が、参考になるでしょう。
あとは、
open(IN, "./data.txt");
while($line = <IN>){
  ($name,$pass)=split(',',$line);
  if($FORM{'name'} eq $name && $FORM{'pass'} eq $pass){
    $flg=1;
    last;
  }
}
close(IN);
if($flg){print "認証OK!"}

なかんじでいいのかなぁ。
前提は
「名前」を入れるフォームは「name」
「パスワード」は「pass」
そのテキストファイルは「data.txt」で、同じディレクトリにある。
ということ。

ちなみにJavaScriptでは、このような方法だとパスワードを「すでに読んでいる」必要がある(と思う)のでやめときましょう。

ふじ 1999/11/19(金) 21:51:50
>   ($name,$pass)=split(',',$line);
その前に
chop $line;
しないと。
#改行文字が $pass にくっついているので判定失敗しちゃう。

Nobu3 1999/11/19(金) 23:15:08
あぅっ!
そうですね。
試してみれば、わかったはずですね・・・。
すいません。

ちなみに、「chop $line;」は「$line =~ s/[\r\n]+$//g;」みたいなことをやるみたいです。

Nobu3 1999/11/19(金) 23:38:12
「$line =~ s/[\r\n]+$//g;」の最後の「g」は必要ないですね。1回だけだし。
あと過去ログ見たら、これって「chomp $line;」の事かも・・・?

B-Cus 1999/11/20(土) 07:05:07
> これって「chomp $line;」の事かも・・・?
です。chop は s/.$//。

[上に] [前に] [次に]