アプリ版:「スタンプのみでお礼する」機能のリリースについて

ログイン画面を作っていまして、セレクトボックスでCさんを選択し、パスワードを間違えて入力(valueの値がパスだと思って頂いて結構です)したらログイン失敗メッセージを出して、リンクからログイン画面に戻れるように下記のコードになっているのですが、
セレクトボックスの値がAさんにリセットされてしまいます。この時、Aさんではなくて最初にセットしたCさんにセットする方法はどのようにするのでしょうか?

#ログイン画面用サブルーチン

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;
}

$pass2 = $FORM{'password'};

return;

sub login{

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="./rental.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

}

#ユーザー認証サブルーチン
sub auth{

use DBI;
$db_name = "bookmanagement";
$db_host = "localhost";
$db_user = "";
$db_password = "";
$db_table = "usertable";

$ID = $pass1;
$password = $pass2;

$conn = DBI->connect("DBI:Pg:dbname=$db_name;host=$db_host",$db_user,$db_password)||die "DBI connect failed: &DBI::errstr";

$sql = "select userID,pass from usertable where pass='$password'";
$result = $conn->prepare($sql);
$ref = $result->execute;

print <<HEADER;
<script type="text/javascript">
function henkyaku(id){
document.form.user_name.value=id;
document.form.submit();
}
// -->
</script>
HEADER

($db_userID,$db_password) = $result -> fetchrow_array();
$result -> finish;

if($pass2 eq ''){
&login;
}

elsif(($db_password eq $password) and ($db_userID eq $ID)){
&display;
}

else{
print "<center>";
print "ログインに失敗しました。<br>ユーザー名・パスワードを確認してもう一度ログインしてください。<br><br>";
print "<a href=\"./rental.cgi\" onClick=\"henkyaku('$pass1')\">" ."ログインページへ戻る"."</a>";

print "</center>";
}

$conn -> disconnect;

}

print <<FOOTER;
</body>
</html>
FOOTER

1;

A 回答 (1件)

selected属性を追記すればできます


<option value="3" $check3 selected>C</option>

print "<a href=\"./rental.cgi\" onClick=\"henkyaku('$pass1')\">" ."ログインページへ戻る"."</a>";
も修正ですね

この回答への補足

nagare様返事が遅くなりすみません。ありがとうございます。
色々と試してみたのですが、結局分らなくなってしまい、戻るリンクをやめて、
エラーメッセージとログインページを同じページに出す事で回避出来ましたのでご報告させて頂きます
回答まで頂いたのに申し訳ありませんでした。

補足日時:2010/02/04 12:04
    • good
    • 0

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