すみません。初心者です。
001.cgi というファイルで フォーム に 正解を入力して Enterキー を 押したら
次の 002.cgi を 開く(実行する)ようにするには どうしたらよいでしょうか?
今は↓このようにして 「次のファイルへ」をクリックしてもらっています。
Enterキーを押すだけで 次の002.cgi (=$num2.cgi)へ行きたいのです。よろしく、お願いいたします。
#--------
if (param('answer') eq $ans){
print ('正解');
print ("<a href=$num2.cgi accesskey=]>次のcgiファイルへ (Alt+])</a> ");
#--------
No.2ベストアンサー
- 回答日時:
CGIで書き出すヘッダ情報で「Location:」を使うといいと思います。
具体的には、
print "Content-type:text/html\n\n";
(これからHTMLファイルを出力し始めます、という意味)
のようになっている所を削除してから、
###ここから###
if (param('answer') eq $ans){#答えがあっていれば
print "Location: http://(CGIファイルまでのパスは略)/002.cgi\n\n";#http://~~に飛ばす
}else{#不正解なら
print "Content-type:text/html\n\n";#もう一度同じフォーム画面を表示
print "HTMLでフォームを出力";
}
###ここまで###
としてみてください。
(以下のイメージで動作予定)
001.cgiのフォームに回答入力
↓ ↑(不正解なら)
001.cgiに回答を渡し、判定
↓(正解なら)
002.cgiにジャンプ
なお、回答中の文章では「http」を自動リンク回避のため「http」と記述しています。
コピーするときは半角に直し忘れないでください。
この回答への補足
Location を 教えていただき、ありがとうございました。
しかし、私の 001.cgi は 以下のように始まっております。
########
print header(-charset => 'Shift_JIS');
print start_html("001.cgi");
########
このprint header(-charset => 'Shift_JIS');を消して
########
if (param('answer') eq $ans){
print ('Location:002.cgi\n\n');
}
else{
print header(-charset => 'Shift_JIS');
##省略
print endform;
{
としたのですが、だめでした。
ファイルの上の方に
if (param('answer') eq $ans)
が、あります。そして、下の方で print endform;
の後にまた
if (param('answer') eq $ans)
があります。これが影響しているのでしょうか?
以下のようにしたら、001.cgi を開くと 002.cgi が登場します。
### はじめ ###
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI qw(-debug :standard);
print "Location:002.cgi\n\n";
### おわり ###
Location は とてもよい方法に思えます。お助けいただければ大変ありがたいです。
No.1
- 回答日時:
これは Perl や CGI についての質問ではなく、
HTML についての質問となるので、適した場所で尋ねられる方が回答を得られると思います。
accesskey を指定すれば、ALTキーを押してアクセスできます。
tabindex を指定すれば、TABキーでの移動順序を決められます。
基本的にはこのような仕組みしか HTML には備えられていないので、
いきなり ENTER を押してクリックさせることは出来ません。
今回のような場合は、予めリンク項目にフォーカスを当てる必要があるので、
HTML に JavaScript を記述して対処します。
if (param('answer') eq $ans) {
print <<"__HTML__";
<p>正解</p>
<p><a href="$num2.cgi" id="next" accesskey="]">次のcgiファイルへ</a></p>
<script type="text/javascript" language="JavaScript">
document.getElementById('next').focus();
</script>
__HTML__
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- Perl perlのrequireの動き方についての質問 2 2022/10/30 17:27
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jcode.plが読み込めない
-
perlのrequireの動き方について...
-
perlをインストールしたのに使...
-
cgiとplとpm
-
cgiからcgiをコールする。
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
DBを10件毎に表示ページング...
-
apacheでPerl CGIが作動せず、5...
-
Excelで第一〇曜日を求める方法...
-
燃えるゴミの日は何曜日ですか?
-
エクセルで相対パスの書き方を...
-
[Excel] ある日の曜日が当月の"...
-
VBA。複数のChangeイベントをま...
-
6月の第2 第4火曜日は何日...
-
週2回のペースって だいたい何...
-
ディレクトリパスの取得について
-
ftpでのネットワークバイトオー...
-
CGI RESCUEの簡易予約システムY...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
perlのrequireの動き方について...
-
jcode.plが読み込めない
-
自CGIのURLのパス部分を取得す...
-
Perlソースを2つのファイルに分...
-
Perlのデバッグ方法って。。。...
-
mt-check.cgiでForbiddenエラー...
-
webからroot権限のコマンドを実...
-
useとrequireでエラー
-
画像のURLの変数を別のCG...
-
Quantifier follows nothing in...
-
require文が実行できない
-
コマンドラインでGET or POSTで...
-
apacheのCGI設定について教えて...
-
Not Found 404エラー時のCGI出力
-
htmlからテキストを返すperlを...
-
perlのcgiで、変数の中身を表示...
-
use CGI
-
フォームでインクリメント入力→...
-
Internal Server Error
おすすめ情報