PHPで条件分岐により別ページにリダイレクトさせたいと思ってます。
<?php
…
if ($hoge) {
header("Location: hoge.html");
exit;
}
…
で、これで$hogeに値を引き継がせてXPのIEでみると、真っ白なページにリダイレクトしてしまします。
ただ、hoge.htmlに遷移はしているらしく、ソースの表示をすると正しいファイルが読み込まれていますし、更新をすると表示されます。
全然意味がわかりません。ちなみにNNだとちゃんと表示されているみたいです。
ということはブラウザの問題なのでしょうか?
確実にリダイレクトさせる方法はないのでしょうか?
#混乱するかも知れませんが、いろいろいじってみていたら、上記PHPのファイルを書き換えるとちゃんと動くこともあるようです…??
No.5ベストアンサー
- 回答日時:
locationに関しては絶対URLということで他の方の回答通りだと思います。
PHPに関してですが、サーバーに組み込まないで外部プログラムとして立ち上げることが可能なのでCGIとしても利用出来ます。
ただし、サーバーに組み込む方が多いので、CGIとして利用出来るということはあまり知られていないかもしれません。
(でも、日本PHPユーザー会のサイトにはトップページにCGIとして使えると書いてあるんですけどね・・・)
参考URL:http://www.php.gr.jp/
ご回答ありがとうございました。
> PHPに関してですが、サーバーに組み込まないで外部プログラムとして立ち上げることが可能なのでCGIとしても利用出来ます。
知らなかったです!
でもすごく意味なさそうな雰囲気ですね。
コマンドラインでPHPを実行するのは結構使えますが、CGIとしては要らないですよね…
No.6
- 回答日時:
> リダイレクト先のページはEUCなのですが、ブラウザの設定をS-JISにすると画面が真っ白
思いあたることが一点だけあるのを忘れてました。
ブラウザのバージョンによるのかも分かりませんが、以下のことを確認してください。
<TITLE>~</TITLE>が日本語で書かれていて、かつ
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC-JP">
よりも前にありませんか?
その場合、文字コードの認識がうまくいかない場合があります。
META行を先に記述すればうまくいくようです。
現にPHPの日本語マニュアルがそのようになっており、真っ白になるページがいくつか存在します。
因みに、ブラウザはIE5.01です。
#マニュアルを修正して欲しい...
ご回答、ありがとうございます。
お礼が遅くなり、申し訳ございませんでした。
最近解決することができましたのでご報告申し上げます。
やはり文字コードの問題だったらしく、
(1)ファイルがEUCで書かれている
(2)METAでEUC-JPを指定している
(3)HTMLの頭に文字コードが判別しやすい漢字を埋め込んでおく
ということを全て行っていても、何故かブラウザがShift_JISとして表示してしまっていたのが原因でした。
#でも結局どのような環境でなるのかは不明でしたが…
そこでリダイレクト先のページのヘッダーを明示的にEUC-JPと出力するように変更したところ、文字化けは解消されました(ようです)。
ご協力ありがとうございました。
色々勉強になりました。
またどうぞよろしくお願いいたします。
No.4
- 回答日時:
LocationのURI指定は絶対URIのみです。
相対ではNN6.0などからして動かないように思います。
他の部分の問題かどうかは判断材料が少ないのでよくわかりません。
少しづつ切り分けていくしか無いように思います。
(半角スペース、改行文字等がひとつ余分に混じってもアウトです)
#似ていますがPHPはCGIではありません。
#サーバが外部(CGI)プログラムを呼ぶのがCGIです。
#PHPはサーバ内処理ですので、CGIが呼ばれません。
#PHPがCGIとなると、ASPもCGIになってしまいますよね。
#本題と関係ありませんけれどm(_ _)m
ご回答ありがとうございました。
お礼が遅れて申し訳ございませんでした。
絶対指定は気をつけます。
PHPマニュアルでも注意書きでそのように書いてありました。
原因は恐らく文字コードらしいことが判明しました。
(取りあえずご報告です)
> #似ていますがPHPはCGIではありません。
色々調べましたがやっぱりそのようですね。
大変勉強になりました。
まとめると、実行したときにプロセスが立ち上がるかどうかがCGIかどうか、という理解でよろしいでしょうか?
No.3
- 回答日時:
何も表示されないのだから文字コードの問題でもないでしょうし...
強制的にリフレッシュさせるように変更するとどうなりますか?
$id = time();
header("Location: hoge.html?id=$id");
>ヘッダの出力ですが、質問の中のPHPでheaderの記述の前に何ら出力を行ってません。
念のため確認しますが、空行もありませんよね。<-詳細はマニュアル参照。
ご回答ありがとうございました。
お礼が遅れて申し訳ございませんでした。
空行もありません。不思議です。。
> 何も表示されないのだから文字コードの問題でもないでしょうし..
実は原因はこれかな?とか思い始めてます。
リダイレクト先のページはEUCなのですが、ブラウザの設定をS-JISにすると画面が真っ白になりました。
まだ完全に確認は取れてないし、どうしたら回避できるのかはわからないですが、この線で検討していきたいと思います。
#それにしてもヘッダーで文字コードを強制的に指定することってできるのだろうか…?
No.2
- 回答日時:
リダイレクト先のHTML出力の前の段階、
言い換えればヘッダの出力に問題があるのではないでしょうか。
#役に立たないレスですみません。
#ところで、PHPってCGIじゃないような(^^;
ご回答ありがとうございます。
ヘッダの出力ですが、質問の中のPHPでheaderの記述の前に何ら出力を行ってません。requre、includeもありません。
パラメータを$_GETで取っている記述があるだけです。
なぜでしょう…?
#ところで、PHPってCGIじゃないような(^^;
あれ…?
確かにサーバー側でプロセスは新たに立ち上がらないですが、サーバーサイドで実行結果を返すのでPHPもCGIではないですか?
これも質問しないといけないかな?(笑)
補足ですが、この状態になるのを確認したブラウザはIE6です(XPだからあたりまえか…)。NN4.7ではきちんとページが表示されることも確認しています。
No.1
- 回答日時:
hoge.htmlを絶対URIにしてみてはどうでしょう?
また、値を引き継がせたいのであれば、htmlではなくてhoge.php?hoge=$hogeにしないといけないと思うのですが…。
ご回答ありがとうございます。
絶対URIにしましたが変化ありませんでした。
> また、値を引き継がせたいのであれば、htmlではなくてhoge.php?hoge=$hogeにしないといけないと思うのですが…。
いや、値を引き継がせたいわけではないんです。
値$hogeをフラグにして静的なHTML(hoge.html)にリダイレクトさせたいだけなんです…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- PHP PHP MySql ページング 2 2022/09/20 06:38
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- PHP PHP ページング データベース 1 2022/06/16 10:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メール送信後のHTMLが文字化け...
-
CGI実行できない。ソースが表示...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
WEBページを強制的に横画面で見...
-
select値をhiddenのvalueに渡し...
-
pythonのnumpyでの列(縦)ベク...
-
日本語文字化け(GETメソッド?)
-
EXCELとの連携
-
チェックボックスグループの一...
-
HTML プルダウンメニューの選択...
-
vsftpd+sslでアップロードできない
-
iis+cgiでmultipart/form-data...
-
Javascriptの変数をCGIに送る方法
-
INPUT TYPE
-
VB.net データーグリッドビュー...
-
チェックボックスの返す値
-
CGI経由でのPDFファイルをダウ...
-
「value」に2つの値をセットす...
-
postデータのあるページの再表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で文字化けしないようにす...
-
cgiからsendmailを送信で文字化け
-
perlを難読化、暗号化させたい
-
プログラミングについての質問...
-
cgiで動画ファイルをアップロー...
-
WEBアプリケーションからフォル...
-
CGI実行できない。ソースが表示...
-
content-dispositionによるファ...
-
CGI管理ページなどより背景画像...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
INPUT TYPE
-
WEBページを強制的に横画面で見...
-
[HTML]プルダウンメニューの横...
-
VB.net データーグリッドビュー...
-
別formのhidden項目を自form値...
-
FORMのselectの選択肢を最初か...
おすすめ情報