作者giacch (小a)
看板Perl
標題Re: [問題] exists的用法
時間Mon Oct 20 12:36:40 2008
※ 引述《yingwan (yingwan)》之銘言:
: 又卡住了....只要上來求助前輩了
: 我想要用perl CGI 寫一個使用戶登入的網頁
: 程式會先檢查檔案裡裡有沒有這個帳號存在,
: 有的話就會出現該用戶的email,沒有的話程式就會說"該用戶不存在"
: 寫了半天網頁都一直出現email,也不管有沒有哪個ID存在
: 希望前輩們幫我看看我是哪裡寫錯,謝謝大家
: #!/usr/bin/perl
: #--------------------------------------------------------
: #Login page for userID and password
: #if userID already exist or missing input, show error msg
: #otherwise, show user's email address
: #--------------------------------------------------------
: use CGI qw(:standard -debug);
: use CGI::Carp qw(fatalsToBrowser);
: #get input
: $userid= param ("userid");
: $password= param ("password");
: $file="hw6-22.out";
: open(IN,$file) || die "can't read $file";
: @all = <IN> ;
: close(IN);
: chomp @all;
: #checking for existing userID
: %all=();
: foreach (@all) {
: ($userid, $password, $email) = split(/,/,$_);
: $all{$userid} =$password;
: }
: if (exists $all{$userid}) {
: print header();
: print start_html(-title=>"Existing ID");
: print h2("Your email address:");
: print p("$email");
: exit;
: }
: # check for missing input
: if ($userid eq "") { push(@missing,"User ID"); }
: if ($password eq "") {push (@missing, "Password");}
: $missing= join(", ",@missing);
: if ($missing) {
: print header();
: print start_html(-title=>"missing input");
: print h2("Incomplete Input");
: print p("You did not enter <b>$missing</b>");
: print end_html();
: exit;
: }
: else
: {
: print header();
: print start_html(-title=>"Not exist");
: print p("<b>The UserId does not exist </b>");
: print end_html();
: exit;
: }
只列出有修改的部分...
#checking for existing userID
%all=();
foreach (@all) {
next if(/^$/); # 跳過空行
#($userid, $password, $email) = split(/,/,$_);
my ($userid, $password, $email) = split(/,/,$_);
next if($userid == '' or $password == '' or $email == ''); # 跳過資料有缺的
#$all{$userid} =$password;
$all{$userid}{'password'} =$password;
$all{$userid}{'email'} =$email;
}
#if (exists $all{$userid}) {
if (exists $all{$userid}{'password'}) {
print header();
print start_html(-title=>"Existing ID");
print h2("Your email address:");
# print p("$email");
print p("$all{$userid}{'email'}");
exit;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.236.185
※ 編輯: giacch 來自: 118.232.236.185 (10/20 12:53)
→ giacch:跳過 空行 與 資料有缺 用意在檢查資料格式是否正常... 10/20 12:56
→ giacch:大略檢查而已(不夠嚴謹)... 不是問題的重點啦... XD 10/20 12:59
推 yingwan:大感謝...可以問一下有加my跟沒加的差別嗎? 10/21 09:28
→ giacch:我只知道my能宣告成區域變數... 詳細我也不甚了解... 10/21 11:13
→ giacch:希望有大大能給個簡單的定義或解釋~ (我是初學者... orz 10/21 11:14