
http://www.aimix.jp/cgi/accformkioku.html
上のサイトを参考にログイン画面を作っていまして、
この例の場合のようにセレクトする値が3つ、4つならこの書き方でもよいと思うのですが、
セレクトする値が10個、15個…となればソースが長くなり、とても見づらいものとなってしまいます。もうちょっとスマートな
書き方はあるのでしょうか?(一部略してあります)
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
print "<title></title>\n";
print "</head>\n";
print "<body>\n";
&analysis;
&auth;
sub analysis{
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\r//g;
$FORM{$name} = $value;
}
$pass1 = $FORM{'user_name'};
return;
sub login{
if($pass1 eq '1'){
$check1 ="selected";
}
elsif($pass1 eq '2'){
$check2 ="selected";
}
else{
$check3 ="selected";
}
print <<HEADER;
<center>
<caption><h1>ログイン</h1></cption>
<table border="5" bgcolor="cfcfcf" width="300" height="150">
<tr>
<td align="center" valign="center">
<form name="form" method="post" action="./xxx.cgi">
ユーザー名:
<select name="user_name">
<option value="1" $check1>A</option>
<option value="2" $check2>B</option>
<option value="3" $check3>C</option>
</select>
<br><br>
パスワード:
<input type="password" name="password">
<br>
<center>
<input type="submit" name="submit" value="ログイン">
</center>
</form>
</td>
</tr>
</table>
</center>
HEADER
}
print "</body>";
print "</html>";
1;
No.2ベストアンサー
- 回答日時:
#ユーザー指定
@User = (
"", #0番目スキップ
"A",
"B",
"C")
if($pass1 =~ /^[1..$#User]$/){
$check[$pass1] ="selected";
}else{
$check[$#User] ="selected";
}
foreach(1..$#User){
print "<option value=\"$_\" $check[$_]>$User[$_]</option>";
}
この回答への補足
taporu様、ありがとうございます。
実行環境が社内にしかなく、返信が遅くなり申し訳ありませんでした。
ちょっとエラーがあり(@Userの最後のセミコロン抜け)それを解決するのに時間がかかってしまいましたが、予想通りの動きをしてくれました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【至急!!!】python言語で本を見...
-
Pythonでプログラミング プログ...
-
チェックボックスのCGIへの値の...
-
関数「exists」と「defined」の...
-
c言語 16進数の2進数への変換
-
UWSCのSELECT文の記述方法
-
Tiny Basicのプログラムでもう...
-
Adafruit LIS3DH 3軸加速度セン...
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
VB6で、長い時間かかる処理...
-
FindFirst を複数条件で検索
-
JSONで文字列が長い時
-
CGIから出力される文字が化けて...
-
<SELECT>タグの折り返し
-
文字の横にプルダウンを表示さ...
-
1桁の日付に0を付ける
-
複数列を持ったリストボックス...
-
セレクトボックスの中を一部隠...
-
value属性
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
【至急!!!】python言語で本を見...
-
Pythonでコンソールをクリアす...
-
c言語 16進数の2進数への変換
-
関数「exists」と「defined」の...
-
Perlで、経過をLoading画面みた...
-
I2C接続のLCDディスプレイを使う
-
文字のカラーとフォントの指定...
-
[Ruby] irbにおける文字化け
-
UWSCのSELECT文の記述方法
-
switch文のエラーについて
-
python print文のエラー
-
awkの正規表現での最左最短マッ...
-
ソケットでのデータ送受信につ...
-
Adafruit LIS3DH 3軸加速度セン...
-
pythonの*
-
qq!!の意味を教えてください。
-
$(ドル)の記号を表示したいの...
-
Pythonでプログラミング プログ...
おすすめ情報