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で質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パイソンのクラスについて
-
Pythonでターミナルに文字を出...
-
perlでurlが正しいか判定したい
-
SHA1ハッシュの生成結果が異な...
-
関数「exists」と「defined」の...
-
N88-日本語 BASIC ASCII ファイル
-
pythonで演算子を変数に代入す...
-
【至急!!!】python言語で本を見...
-
c言語 16進数の2進数への変換
-
DBIがうんともすんとも言いませ...
-
フォームの内容を確認画面で表示
-
Perlの例文でif($a==1&&$b==5&&...
-
16進の10進変換について
-
swift 文字コードから文字に変...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
メモリをアドレスを直接指定し...
-
パイソンプログラミング
-
「*:*」って何を意味するのでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Pythonでターミナルに文字を出...
-
16進の10進変換について
-
int(input("○○"))の使い方
-
シェルスクリプトで、空白(ス...
-
パイソンのクラスについて
-
【至急!!!】python言語で本を見...
-
awkの正規表現での最左最短マッ...
-
pythonの*
-
I2C接続のLCDディスプレイを使う
-
数値かどうかの判定方法
-
awk の int()に関数について
-
pythonで改行を含めてfindする方法
-
関数「exists」と「defined」の...
-
pythonで演算子を変数に代入す...
-
PythonでUTF8の文字列をリスト...
-
c言語 16進数の2進数への変換
-
pythonを使ったプログラミング...
-
画面上再読み込みをさせたいの...
-
変数の中は文字列か数値か調べ...
-
UWSCのSELECT文の記述方法
おすすめ情報