ログイン画面を作っていまして、セレクトボックスで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;
No.1ベストアンサー
- 回答日時:
selected属性を追記すればできます
<option value="3" $check3 selected>C</option>
print "<a href=\"./rental.cgi\" onClick=\"henkyaku('$pass1')\">" ."ログインページへ戻る"."</a>";
も修正ですね
この回答への補足
nagare様返事が遅くなりすみません。ありがとうございます。
色々と試してみたのですが、結局分らなくなってしまい、戻るリンクをやめて、
エラーメッセージとログインページを同じページに出す事で回避出来ましたのでご報告させて頂きます
回答まで頂いたのに申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
フォームで入力した値を表示し...
-
Application.ScreenUpdating = ...
-
構造体の各データの表示につい...
-
I2C接続のLCDディスプレイを使う
-
swift 文字コードから文字に変...
-
セレクトボックスである項目を...
-
[python] 文字列を変数名として...
-
ACCESS テキストボックスを隙...
-
セレクトメニューで選んだ値を...
-
python print文のエラー
-
ホームページビルダーのメール...
-
C# GetFilesで複数のファイルの...
-
どちのほうがすきですか?
-
Pythonでターミナルに文字を出...
-
sendmailで本文が文字化けします
-
pythonの*
-
複数のIP取得
-
Sendmailの文字化けについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
【C#】数値の範囲チェックについて
-
map(STL)でinsertを行いたいで...
-
リロード後にプルダウンの選択...
-
フォームで入力した値を表示し...
-
Perlでアルファベットを数...
-
linq で 楽天ウェブサービスのX...
-
入力内容のチェック・・・『ま...
-
途中まで出来ているのですが‥(D...
-
CGI(Perl)で、Net::FTPを使いたい
-
前のページへ戻ったときのプル...
-
パターンマッチで変数でマッチ...
-
セレクトボックスについて
-
CGIやPHPで外部ファイルの内容...
-
デコードできない時があります><
-
Application.ScreenUpdating = ...
-
どちのほうがすきですか?
-
formで特定のinputを送信しない...
-
Pythonでターミナルに文字を出...
おすすめ情報