PHPでJSPのインクルード方法

このQ&Aのポイント
  • PHPでJSPのファイルをインクルードする方法について解説します。
  • ログイン情報を含むJSPファイルを取得し、ログイン前と後で要素の出し分けをする方法についてお伝えします。
  • PHP初心者の方でも理解しやすいように、詳細な手順をご説明します。
回答を見る
  • ベストアンサー

PHPでJSPのインクルード方法

PHPの知識が全く無く、教えて頂きたいのですが、 今PHPファイルでJSPファイルを以下のようにincludeしようとしています。 ※以下のURLは例です。 <?php require_once ("http://www.test.jp/hoge/test.jsp"); ?> このtest.jspにはログイン情報が記載されており、 このURLを開くと、サイトをログインしていなければ、'ログイン前'、 ログインしていれば'ログイン後'と出るようになっています。 このtest.jspを取得して、ログイン前と後で要素の出し分けをしようと しているのですが、ログインしていても'ログイン前'と出てしまっていて どう対応すれば良いかわからず、ご教示願えたらと思います。 PHPは全くの初心者で知識が無いので、 お手数ですが、お力を貸してください。 よろしくお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>test.jspはログインしていれば、urlを直打ちするとログイン後と文字列がでるので、ログイン状態で取得できないのはそのセッションの問題なのでしょうか。。 はい、その通りです。直打ちするというのは、ブラウザから直接test.jspにアクセスするということだと思いますが、その場合はブラウザから端末に保存されているクッキーが送信されますので、同じブラウザからログインした時のセッションが張られます。test.jspの中身が分からないので想像になりますが、そのセッションの情報からログインしているかどうかをチェックしているものと思われます。なので、たとえログインしていたとしても、ログイン時に保存したクッキー(通常はログインしたブラウザによって管理される)を送らない限り、別の端末からアクセスしてきたとみなされてセッションが張られず、「ログイン前」と出てしまうのです。 >jsのajaxでなら問題なく取得できるので、なぜjsだとできてphpだとできないのでしょうか。 jsはクライアントサイドで動作します。つまり、ブラウザ上でjsが実行されます。jsから別のサーバにアクセスすると、そのサーバのパス,あるいはドメインに紐付いたクッキーがブラウザに保存されていれば、それが送られるのです。よって、test.jspにjsからアクセスすると、ブラウザでログインした時のクッキーが、そのままjs経由で送られますので、セッションが張られて「ログイン後」、とでます。 一方、PHPはサーバサイドで動作します。ブラウザで実行されるわけではありません。require_onceも当然、サーバ側で実行されます。なので、ブラウザに保存されているクッキーは送られません。それ以前に、require_onceではクッキーを送れないと思います。

yukiponta
質問者

お礼

とても詳しいわかりやすい説明ありがとうございます!全て理解できました!

その他の回答 (2)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

「全くの初心者」とのことなので allow_url_includeを有効にしてないとか。そこは大丈夫でしょうか? >ログイン前と後で要素の出し分けをしようと >しているのですが、ログインしていても'ログイン前'と出てしまって 少なくともあなたが冒頭で提示したソースは一応問題ありません。現象を確認できるソースを提示して質問するようにした方がいいと思いますよ。

yukiponta
質問者

お礼

ご回答いただき、ありがとうございました!

回答No.1

require_onceでtest.jspをインクルードしてますので、PHPの実行環境がtest.jspを 読み込みます。test.jspでログインしたかどうかをチェックするにはログインしたクライアント(ブラウザなど)に保存されているクッキーを送る必要がありますが、このクッキーはrequire_onceでは送られませんので、常にログイン前と出てしまうのです。 セッションを利用したログイン状態の管理の仕組みは参考URLをご一読ください。

参考URL:
http://www.geocities.jp/sugachan1973/doc/funto62.html
yukiponta
質問者

お礼

ご回答いただき、ありがとうございました!

yukiponta
質問者

補足

ご回答ありがとうございます。 test.jspはログインしていれば、urlを直打ちするとログイン後と文字列がでるので、ログイン状態で取得できないのはそのセッションの問題なのでしょうか。。 jsのajaxでなら問題なく取得できるので、なぜjsだとできてphpだとできないのでしょうか。

関連するQ&A

  • php_value include_pathを無効

    php_value include_pathを、あるディレクトリ以下では、無効にしたいのですが、 どうすればよいでしょうか? ■前提 ・サイト全体は、「.htaccess」に「php_value include_path」を書いて制御 ■やりたいこと ・ある特定ディレクトリ「hoge」以下では、「php_value include_path」ではなく、 PHPに直接書いた「require_once './★★/●●';」を利用したい ・つまり、設定ファイル「.htaccess」に記述した中のある一部分(特定ディレクトリ以下)だけは、「PHPソースに記述」したincludeパスを使いたい ■試してみてダメだってこと ・「hoge」に「.htaccess」を設置し、空の「php_value include_path=""」と書いてみたけど、うまくいきませんでした

    • ベストアンサー
    • PHP
  • PHP include_once

    include_onceで読み込んだファイルが そのままテキストとして出力されてしまいます。 以下のような感じです。 インクルードするファイル fail.inc test_val = array("aaa" => "aaa111", "bbb" => "bbb222", "ccc" => "ccc333"); ソース本体 src.php <?php include_once('./fail.inc'); 以下処理 exit(); ?> これをそのまま実行すると以下のように出力されます。 test_val = array("aaa" => "aaa111", "bbb" => "bbb222", "ccc" => "ccc333"); includeせずにそのまま走らせると正常に動きます。 httpd.confのaddtypeにincという拡張子は追加していませんが 他の同様のソースでは問題なく読み込めます。 require_onceとかも試しましたが同じようにfail.incの中身がそのままテキストとして 出力されてしまいます。 どうしたら正しく読み込めますでしょうか。 ご回答よろしくお願いしますm(_)m

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • (require / require_once) (include / include_once)について

    毎度、お世話になります。 今回は、requireとrequire_once(includeとinclude_once)の使い分けについて 教えて下さい。 取りあえず、改造しているPHPでは、include()だけを使って正常に動作しています。 include()させている箇所がいくつもあります。 ただ、やっぱりわからないのは、 requireとrequire_once(includeとinclude_once)に関して、 PHPマニュアルなどを見ても、処理方法の違いだけで、それならば最初から全部、 require_once() 又は、include_once() だけの方が良いように思えるのですが、 例えば、この処理に関しては、絶対、include()。これならば、require()。 また、これなら、include_once()、あるいは、require_onceと言う風に、 明確なものはあるのでしょうか? かなり迷路に迷い込んでます。(時間が止まってます) どうかよろしくお願いします。

    • 締切済み
    • PHP
  • PHPのinclude_pathについて

    以下はPEARでExcelファイルを作成し、ダウンロードするプログラムです。 <?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('sample3-1.xls'); $worksheet =& $workbook->addWorksheet('サンプル'); $workbook->close(); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="./sample3-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?> このプログラムを実行すると、 Warning: require_once(Spreadsheet/Excel/Writer.php) [function.require-once]: failed to open stream: No such file or directory in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Writer.php' (include_path='.;C:\php5\pear') in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 というエラーメッセージが出ます。 php.iniには、PEARのパッケージをインストールした際に ;***** Added by go-pear include_path=".;C:\php-5.2.17-Win32-VC6-x86\pear" ;***** と記述されているにも関わらず、エラーメッセージのpathはinclude_path='.;C:\php5\pear'となっており、原因がわかりません。 php.iniはC:\WINDOWSの直下に置いてあります。 PHPのバージョンはphp-5.2.17-Win32-VC6-x86で、Cドライブの直下にインストールしています。 WebサーバーはIISです。 eclipseを使っており、バージョン?はpleiades-e3.6-php_20110326です。 また、phpinfoのinclude_pathはLocalとMasterの両方が.;C:\php5\pearとなっています…。 Configuration File (php.ini) Path C:\WINDOWS Loaded Configuration File C:\WINDOWS\php.ini この2つはこの様になっており、これは2つの場所は一致していないといけないのでしょうか? 解決手段がまったくわかりません。 何かこのエラーについてわかることがあれば教えていただけませんか?

    • 締切済み
    • PHP
  • it.phpをインクルード

    テンプレートhtmlとデータの結合をさせようと、 php.iniを書き換えて、include_pathの設定をしたのですが、 require_onceでit.phpのインクルードがうまくいきません。。 理由はなにが考えられるでしょうか? どなたか御教授おねがいいたします。 環境は、 PHP Version 4.1.2 Apache/1.3.23 です。

    • ベストアンサー
    • PHP
  • JSPでのincludeについて

    JSPからincludeでperlを呼び出したのですが、 perlのファイル内で記載したスクリプトがそのまま文字列として表示されてしまいます。 なにか設定する必要があるのでしょうか。 コマンドから直接perlを実行した場合は期待する結果が返ってくることが確認できました。 --------------------------------------------- ■test.jsp // perlを呼び出し <jsp:include page="test.pl" flush="true"></jsp:include> ■test.pl #!/usr/bin/perl print $result; exit; ■test.jspで表示される結果 #!/usr/bin/perl print "aaaaaaaaaaaaaaaa"; exit; ■期待する結果 aaaaaaaaaaaaaaaa --------------------------------------------- よろしくお願いします。

  • PHPのコーディングルール?

    お世話になります。 只今、PHP5で開発しているのですが 皆様のご意見を聞きたいと思いまして、質問させていただきます。 以下の場合、どちらでコーディングしますか? また具体的な理由などありましたら、ご教授頂けますでしょうか。 (1)if(!isset($hoge)){ (2)if(isset($hoge) == false){ 以下の場合、どちらでコーディングしますか? また具体的な理由などありましたら、ご教授頂けますでしょうか。 (3)require_once(/jp/ne/goo/Hoge.php) ・・・絶対パスでrequireする。 (4)require_once(goo/Hoge.php)  ・・・include_pathを通すなどして、相対パスで記述する。 基本的なことかもしれませんが、ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • include_onceについて

    php初心者です。 includeやrequireにはinclude_onceやrequire_onceといった "すでに読み込んでいる場合"は無視するというものがありますが、 この"すでに読み込んでいる場合"とはどういう時なのでしょうか? サーバーにキャッシュでもされていて、そのキャッシュがあればそれを利用するという感じなのですか? どういう条件でinclude_onceやrequire_onceが実行されるのか教えてください。 また、どういう時に使い分けるのが賢いやり方なのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • include_pathについて

    php.ini内のinclude_pathをinclude_path=".;C:\php\include"と設定してC:\windows\(不安なのでC:\php\にも)に置いているのですが、 なぜかphpinfo()を開いて確認すると".;C:\php5\pear"となっています。 Loaded Configuration File を見ても C:\Windows\php.ini となっていますし。 require_once "DB.php"を実行したときに以下のエラーが出たので、 db.phpのインストールも済んでいることから、include_pathが正しく設定されていないのが問題だと思うのですが・・・ Warning: require_once(DB.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'DB.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\users.php on line 2 php.ini以外にも設定しなければいけない個所があるのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう