![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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で質問しましょう!
似たような質問が見つかりました
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlにおけるセッションIDについて
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
INPUT TYPE
-
チェックボックスとセレクトボ...
-
「value」に2つの値をセットす...
-
VB.net データーグリッドビュー...
-
FORMのselectの選択肢を最初か...
-
HTMLでのタイマーの設置
-
cgi(perl) sendmailの使い方
-
VB初心者。小数点以下の表示で...
-
iis+cgiでmultipart/form-data...
-
[HTML]プルダウンメニューの横...
-
vsftpd+sslでアップロードできない
-
リンクからのPOST送信について
-
ホームページのメールフォーム...
-
WEBページを強制的に横画面で見...
-
フォームの年号リストの自動更新
-
別formのhidden項目を自form値...
-
CGIに渡しているパラメータを表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーバーのテキストファイルを...
-
LuaJITで日本語出力
-
表示を一覧表形式にしたいので...
-
HTMLからCGIへデータを引き継ぎ
-
IIS の@INC ERRORについて教えて
-
索引を目次の該当ページへ入れ...
-
CGIの中で異なるContent-typeの...
-
jcode.pl 使い方
-
ブラウザ表示されません大変困...
-
CGIで、ボタンを押した時に違う...
-
perlがうごきません
-
標準入力からデータが読込めない
-
ページング処理ついて困っています
-
ひらがなチェック
-
サーバー(UNIX)上のフォルダ...
-
次のcgiファイルを開くには? ...
-
他のWWWサーバーからHTMLを得る
-
ランダムに1行読込み フォーム...
-
『数字の3桁毎にカンマを付け...
-
Parallel::ForkManager(2)
おすすめ情報