http://oshiete1.goo.ne.jp/qa3951263.html
で質問している者です。
間違って、[回答への補足] に書いてしまいました。
もう一度質問させてください。すみません。
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) が 下の方にもう一度出てくるからでしょうか?
###### はじめ #####################
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI qw(-debug :standard);
print "Location:1266.cgi\n\n";
###### おわり #####################
としたら、001.cgi を開くと
002.cgi へ飛ぶことができました。
どこに
print "Location:1266.cgi\n\n";
を書けばよいのでしょうか? よろしく、お願いいたします。
No.2ベストアンサー
- 回答日時:
>どこに
>print "Location:1266.cgi\n\n";
>を書けばよいのでしょうか? よろしく、お願いいたします。
print "Location:ほげほげ.cgi\n\n";
が実行出来るのは
print header(-charset => 'Shift_JIS');
を実行する前です。
念の為に書いておきますが「実行する順番」が大事であって「どこに書いてあるか」は関係ありません。前にあろうが後ろにあろうが1つあろうが複数あろうが関係なく「実行する順序だけ」が大事です。
CGIは、WEBサーバープログラムにデータを送る場合、今から送る物が何なのかを示す為、一行目にヘッダーを出力しなければなりません。ヘッダーを送ったら、1行の空行を空け、その後にデータ本体を出力します。
「送られる内容がhtml文書だった時」は、ヘッダーに
Content-type:text/html
と出力し、1行の空行を空けた後、本文を出力する決まりになっています。
「送られる内容が画像データだった時」は、ヘッダーに
Content-type:image/jpeg
とか
Content-type:image/gif
とか
Content-type: image/png
と出力し、1行の空行を空けた後、画像そのものを出力する決まりになっています。
「送られる内容がリダイレクション(転送指令)だった時」は、ヘッダーに
Location:「http://で始まるURL」
と出力し、1行の空行を出力する決まりになっています。
と言う訳で「CGIはヘッダーが命」と言うのが判ったと思います。
さて、ここで
print header(-charset => 'Shift_JIS');
は
Content-type:text/html
と出力し、1行の空行を空けた後、Shift_JISのフラグを付けた文字セット指示タグを出力する意味になります。
つまり、
print header(-charset => 'Shift_JIS');
を実行してしまった後では
print "Location:1266.cgi\n\n";
は実行しても意味がないのです。ヘッダー出力処理はもう実行済みですから。
簡単に言えば
print header(-charset => 'Shift_JIS');
の代わりに
print "Location:1266.cgi\n\n";
を実行すれば、1266.cgiに飛ぶ、と言う事です。
No.3
- 回答日時:
else{
print header(-charset => 'Shift_JIS');
##省略##
print endform;
{
↑else を閉じれていません。} として下さい。
No.1
- 回答日時:
>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;
>{
>
>としたのですが、だめでした。
この「##省略##」と書いている部分に「 print start_html("001.cgi");」が書かれているということでよろしいのですか?また「だめでした。」というのは次の画面に遷移しなかったということでしょうか?
>print ('Location:002.cgi\n\n');
単引用符で括ると「\n」が改行になりませんから、二重引用符で括ってください。
print ("Location: 002.cgi\n\n");
この回答への補足
回答、まことに、ありがとうございます。
はい、
>この「##省略##」と書いている部分に
>「 print start_html("001.cgi");」が書かれて
います。
>「だめでした。」というのは
Internal Server Error
になってしまった、ということです。すみません。
print ("Location: 002.cgi\n\n");
としても Internal Server Error でした。
else の } をどこに書くのかも、関係があるでしょうか?
それから、
この質問とは関係ないかも知れませんが、私は WindowsXP に
Apache を入れて LAN の中だけで Web サーバ をやっている者です。
よろしく、お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
ファイルアイコンの左下に緑の□...
-
Cygwin64のtermio(s).hについて
-
ラズベリーパイ初心者です。 ラ...
-
INDIRECT 横に再度抽出したい
-
perlをバージョンアップしたら...
-
Perlで特定文字列から特定文字...
-
perl 正規表現でエラー
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
perlプログラミング 空白行削除
-
perlの構文でカンマの意味が分...
-
Perlでファイルの末尾から指定...
-
perl 初等プログラミングについて
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Mechanizeにおけるボタンクリッ...
-
jcode.pl 使い方
-
print HTML~をヒアドキュメントで
-
perlにおけるセッションIDについて
-
『数字の3桁毎にカンマを付け...
-
perlでHTML出力時の文字コード
-
フォームメール確認用ページ
-
ソケットの使い方が分からない
-
標準入力からデータが読込めない
-
ダイレクトアクセス
-
LuaJITで日本語出力
-
表示を一覧表形式にしたいので...
-
Parallel::ForkManager(2)
-
HTMLからCGIへデータを引き継ぎ
-
ラジオボタンが両方とも選択で...
-
wordの数式について 定積分を書...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
VB.net データーグリッドビュー...
-
select値をhiddenのvalueに渡し...
おすすめ情報