- ベストアンサー
GETデータの&で区切った個々のエラー処理について質問です。
GETデータ、たとえば http://www.yahoo.co.jp/test.cgi?data1=1237&data2=AK とある場合、$ENV{'QUERY_STRING'}の中のそれぞれの引数値に個別にエラー処理をかける方法を教えてください。順番はdata2が先頭にくるときもあればdata1が先頭にくるときもあります。data以外の文字はだめです。たとえばcode1=となるとエラーになるようにしたい。data1には数字4文字が入ります。data2には大文字の英字が入ります。 組み合わせはdata1=8544だけのときもありますし、 data1=1234&data2=KOのときもあったりばらばらです。 逆の場合もあります。data2=KO&data1=1234というふうに・・・。$ENV{'QUERY_STRING'} を&で分割して@getにいれてから、@getから&で区切られた個々の値を取り出す方法がわかりません。。。 どなたかご教授ねがいます。よろしくお願いいたします。以下のように書いたのですがうまくできません。 sub err_check{ if ( $FORM{'action'} eq "" ) { local(@get); if($ENV{'QUERY_STRING'} !~ /data1|data2|data3/) { &err2; } if (length($ENV{'QUERY_STRING'}) > 30) { &err2; } (@get)=split(/&/,$ENV{'QUERY_STRING'}); foreach $getname (@get) { ##data1のとき if ($data1){ if ($getname !~ /^media=[0-9]+[0-9]+[0-9]+[0-9]/) { &err2; } if (length($data1) > 6) { &err2; } if (length($data1) < 4) { &err2; } } ##data2のとき if($data2){ if ($getname !~ /^data2=[A-Z]+[A-Z]/) { &err2; } if (length($data2) ne 2) { &err2; } } } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- masayuki0511
- ベストアンサー率46% (14/30)