JavaServeletのようなforwardによる画面遷移をPHPで行うにはどうすれば良いのでしょうか?


例えば、サイトのトップページ(http://hoge.com/foo.php)にユーザーがアクセスした時に
条件によって表示するページを切り替えたい(他のページに遷移したい)のですが、
↓のような処理ではリダイレクトになってしまい、サーバーに余計な負荷がかかってしまいます。
 header("location: http://hoge.com/bar.html");

頻繁にアクセスされる部分にこのような遷移処理を入れたいので、JSPのforwardのように内部的に遷移させる方法を探しています。
PHPで、ユーザーに気づかれず(ステータス302が返らない)、サーバーに負荷の少ない方法で画面遷移させる方法がありましたら教えてください。

参考:
http://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html

回答の条件
  • 1人50回まで
  • 登録:2008/05/30 11:28:24
  • 終了:2008/06/04 08:47:40

回答(4件)

id:y-kawaz No.1

y-kawaz回答回数1419ベストアンサー獲得回数2252008/05/30 11:49:55

<?php
echo readfile('bar.html');
?>
これではだめでしょうか?
id:YOSIZO

有難うございます。

ファイルを読み込んで表示するんですね。

ただ、遷移先がhoge.phpのようなPHPスクリプトだった場合、正しく動作するのでしょうか?

2008/05/30 12:05:11
id:y-kawaz No.2

y-kawaz回答回数1419ベストアンサー獲得回数2252008/05/30 11:54:33

<?php
echo readfile('bar.html');
?>
これではだめでしょうか?
id:y-kawaz No.3

y-kawaz回答回数1419ベストアンサー獲得回数2252008/05/30 12:17:03

ポイント60pt

遷移先がphpの場合ですが、ぱっと2種類ほど思いつきましたので書いておきます。


■ひとつは先の回答の echo readfile の代わりに require をする方法です。

<?php
require('bar.php');
?>

■もうひとつは php に対して SSI を有効にしておく方法です。

まず httpd.conf か .htaccess に以下の設定を追加しておきます。

AddOutputFilter INCLUDES .php

次に php 側を以下のようにしておきます。

<?php
echo '<!--#include virtual="bar.php" -->';
?>

SSIの include virtual はapache内部でbar.phpに対するリクエストを実行してその出力を埋め込んでくれます。

include virtual= の部分を include file= に変えてやると内部リクエストの発行ではなく単純なファイル埋め込みになります。

id:kou32rr No.4

kou32rr回答回数197ベストアンサー獲得回数82008/05/30 12:35:52

ポイント30pt

if(条件内容){

require('aaa.php');

}elseif{

require('bbb.php');

}

?>

でいいんじゃないでしょうか。

  • id:y-kawaz
    すみません2重投稿になってしまいました。2つ目の回答は同じものですのでオープンの必要ありません。

この質問への反応(ブックマークコメント)

トラックバック

  • Mon, Nov 30 - 09:32&nbsp;&nbsp;困ったときのランニングコード発動!! 12:10&nbsp;&nbsp;IFRAMEを使わずにHTMLファイルから他のHTMLファイルを読み込む方法 http://phpspot.org/blog/archives/2006/11/iframehtmlhtml.html 12:
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません