プロが教えるわが家の防犯対策術!

ID、パスワードチェック用CGIを作成しました。
正しいID、パスワードを入力すると任意のフォルダへ移動できると言うものです。
ID、パスワードはCGI内で変更することが出来ます。
そのIDに「_」(アンダーバー)を使ったのですが、うまく合致させることが出来ず必ずIDが違いますと出てしまいます。
どうすれば正しく認識してくれるでしょうか?
よろしくお願いします。

A 回答 (3件)

私はperlは素人ですが、


「_」が含まれる場合は

if($in{in_idno} =~ /[^a-zA-Z0-9+]/){
$ngcnt++;
$ngdata .= " ID";
}

このif文の条件が満たされるので、エラーになるように思います。
    • good
    • 0

#さっきの回答で、解決策を示すの忘れてました^^;



 [^a-zA-Z0-9+]
を、
 [^a-zA-Z0-9+_]
にすれば、「_」もIDの一部に使える文字になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。

うまくいきました!!

お礼日時:2004/03/18 16:07

 実際に比較を行っている if 文と、その周辺を記述してください。


 それによります。

この回答への補足

ありがとうございます。
CGIのソースです。

#---パスワード入力チェック----------------------------------
sub input_check{
$ngcnt = 0;
if(!$in{in_idno}){
$ngcnt++;
$ngdata .= " ID";
}else{
if($in{in_idno} =~ /[^a-zA-Z0-9+]/){
$ngcnt++;
$ngdata .= " ID";
}
}
if(!$in{in_pass}){
$ngcnt++;
$ngdata .= " パスワード";
}else{
if($in{in_pass} =~ /[^a-zA-Z0-9]/){
$ngcnt++;
$ngdata .= " パスワード";
}
}
if($ngcnt > 0){
&re_input($ngdata);
}else{
$ngflg = &ip_compare;
if($ngflg == 1){
$ngdata = " ID";
&re_input($ngdata);
}elsif($ngflg == 2){
$ngdata = " パスワード";
&re_input($ngdata);
}else{
print "Location: $page_location\n\n";#移動先ページ表示
}
}
}
#---登録データと入力データの照合----------------------------------

sub ip_compare{

if($in{in_idno} ne $id_data){
return 1;
}
if($in{in_pass} ne $pws_data){
return 2;
}
return 0;
}

補足日時:2004/03/18 14:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!