人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: YOSIZO
●カテゴリ:インターネット ウェブ制作
✍キーワード:JSP PHP アクセス サイト サーバー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● y-kawaz
●0ポイント
<?php
echo readfile('bar.html');
?>
これではだめでしょうか?
◎質問者からの返答

有難うございます。

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

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


2 ● y-kawaz
●0ポイント
<?php
echo readfile('bar.html');
?>
これではだめでしょうか?

3 ● y-kawaz
●60ポイント

遷移先が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= に変えてやると内部リクエストの発行ではなく単純なファイル埋め込みになります。


4 ● kou32rr
●30ポイント

if(条件内容){

require('aaa.php');

}elseif{

require('bbb.php');

}

?>

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ