プロが教えるわが家の防犯対策術!

いつもお世話になっております。(環境:PHP5.2.5)

file_get_contents()を外部ファイル(クラス)の中で使ってデータを取得し、
そのクラスをメインファイルで読み込み、
メインの方で、その得たデータを使おうとしています。
(仮に、メインファイルの名前をmain.phpとしておきます。)

その際、クラスの中に書くコードについてですが、
下記のように、2通りの書き方が浮かびました。
(仮に、このクラスファイルの名前をclass.phpとしておきます。)

//------------------------------------------------------------
$url= 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
$html = file_get_contents($url);
//------------------------------------------------------------
$url= $_SERVER['SCRIPT_FILENAME'];
$html = file_get_contents($url);
//------------------------------------------------------------

で、パターン2の方は、うまく行くのですが、
パターン1の方の処理だと、なぜか、
その処理を行おうとしているファイル(main.php)のダウンロードを開始しようとするのです!

ブラウザに「ダウンロードウィンドウが立ち上がる…」という状況です。

パターン1では、
$url_1 = "http://example.com";
のような、「http://」で始まる書式のURLを
file_get_contents()の引数に入れることになりますが、
これ自体は問題ないと思っています。

実際、クラスで読み込む方法ではなく、file_get_contents()を使う方法では、
問題なく動いたからです。

つまり、
メインファイルに、
上記の2パターンを書いて試した場合には、問題なくうまくいったのです。

言い換えれば、
メインファイルだけで完結している場合には、
どうも問題は起こらないようで、
クラスなどで引っ張ってくると、問題が起こるようなのです。
(私の勘違いの可能性もありますが…。)

以上、まとりのない文章で、申し訳ありません。

自分でも、なにがなにやら、よく分かっていないため、
多くの情報を提供することで、なんとかアドバイスを頂けないかと思い、
ひとまず、使えそうな情報を並べてみました。

チェック項目など、提示いただければ、
適宜、それに従って対応致しますので、
どうかご助言をよろしくお願い致します。

A 回答 (12件中1~10件)

1ヶ月ほど、時間が空いてしまいましたが、



//---(2)---------------------------------------------------------
$url= $_SERVER['SCRIPT_FILENAME'];
$html = file_get_contents($url);
//------------------------------------------------------------
この方法ですと、PHPのスクリプトのソースコード全てを取得することになってしまうように思えますがそれでいいのでしょうか。

そうするとページタイトルを取得したいというオーダーでは多少面倒が生じるように思えますがいかがでしょう。
前回回答では「ページタイトルを取得したい」という意図までが見えなかったために、
ob_startで全HTMLを取得して、Sessionに渡しておいてやり、次のPHPスクリプト内でソレを確認すればよいのではないか、という提案をしました。

ページタイトルだけでよいのであれば、ob_startを使わずに、はなから、ページタイトルの文字列をSessionに渡してやればよいのではないかと思います。

具体的な流れとして、
march4さんの作成されたサイト内では常にSession、またはCookieに、最終到達時点のページタイトルを格納するようにして、

・どこかのサイトからそのページにアクセスされる
・どこから来たかをリファラーなりを見て確認
・リファラー情報が自サイトのものであれば、Session又はCookieに格納しておいたページタイトルを取得する。そうでなければfile_get_contentsで外部サイトのHTMLを取得してページタイトルを取得する。
・上記が全て完了したら、Session又はCookieに現在のページタイトルを格納する

というようにすれば良いのではないでしょうか。

この回答への補足

しっかり、理解してまいりました。

>この方法ですと、PHPのスクリプトのソースコード全てを取得することになってしまうように思えますがそれでいいのでしょうか。

そうですね。
スマートな方法とは言えないですよね。

>ページタイトルだけでよいのであれば、ob_startを使わずに、はなから、
ページタイトルの文字列をSessionに渡してやればよいのではないか

はい、この方法でやってみようと思います!
スッキリ理解できました。
どうもありがとうございます!

補足日時:2009/10/09 01:17
    • good
    • 0
この回答へのお礼

hogehogeさん、おかえりなさい!
ご無事のようで、安心致しました。
またこちらへ戻ってきて頂き、本当に嬉しいです。

hogehogeさんのいらっしゃらない間に、
私はちょこちょこ質問をしており、
まだ締め切っていないものも中にはありますので、
もしよろしければ、ご助言頂けると嬉しいなと思います。
今後とも、どうぞ宜しくお願い致します。

さて、こちらの質問に話を移しまして、
今回頂いた回答をざっと読ませて頂きましたが、
大変分かりやすくまとまっているな、という印象を受けました。
まだしっかりとは読んでいませんが、おそらく問題なく理解でき、
また、疑問の解決にも至れそうです。

頂いた回答をしっかり読み終えましたら、
改めて補足蘭にて、返事をさせて頂く予定です。

ホゲホゲさんが復帰されて、本当に嬉しいです、はい。(^_^)ノ

お礼日時:2009/10/08 23:04

>アクセスの記録として、


>どこからどこへと、ページ遷移したか、
>を記録できたらと思っておりました。
ページ遷移だけを記録するのであれば、そのURLなりファイル名なりをSessionに持ちまわせばよいだけの話かと思いますが、生成されたHTMLを取得する意図はなんだったのでしょうか。

とりあえずは何らかの理由があるとして話を進めます。
その後の経過はコメントにないようだったので、出力のバッファリングについて、なんですが、tany180sxさんが記載した
<?php
## 適当
ob_start();
print "<html>....</html>";
$html = ob_get_contents(); //HTMLを取得
ob_flush(); //HTMLを出力
//$htmlを解析してごにょごにょする
?>
この部分、
ob_start関数でバッファリングがスタートします。
結局コレがスタートすると、いかにechoやprintをしようが出力を行いません。
ob_get_contents関数では、そのバッファリングしているechoやprintしたい内容を、取得できます。上記の例では$html変数にその出力内容を格納してますね。
最後のob_flush関数で、バッファリングした全内容を出力します。
出力しないで全部削除する場合は、ob_end_clean関数を変わりに叩けばよいと。

で、$htmlで取得した、HTML部分を、Sessionに格納するなりしてやれば、意図した動作を行うことが出来ます。

この回答への補足

お久しぶりでございます。
返答が遅くなり、申し訳ございませんでした。

では、早速、補足をさせて頂きますが、
しばらく間が空きましたので、まずは問題の整理をさせて頂きます。

質問当初、ページ遷移を調べるスクリプトとして、
//---(1)---------------------------------------------------------
$url= '​http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];​
$html = file_get_contents($url);
//---(2)---------------------------------------------------------
$url= $_SERVER['SCRIPT_FILENAME'];
$html = file_get_contents($url);
//------------------------------------------------------------
を思いついたわけですが、
いくつかの回答を経て、
(1)では、PHP処理された結果をfile_getするため無限ループとなり、
(2)では、PHPソースをfile_getすることになる(無限ループとならない)ため、私のしたいこと(目的)は達成できる、
ということが、おかげさまで、理解することができました。

で、ページ遷移については、
サイト外部(他サイト)からの遷移も考慮に入れていたため、
http://という書式で、file_getする方向に統一したいと考えており、
そのために(1)の方式にこだわっていたわけですが、
サイト外部からの遷移には(1)で対応し、
サイト内部からの遷移には(2)で対応する、という方向で
うまくいきそうだなと、今回分かりました。(つまり、条件分岐させる)
(実際、質問文にも記載の通り、(2)の方法ではうまくいっております)

というわけで、当初知りたいと考えていたことは全て知ることができたわけですが、
回答の中で登場したob_start()関連について、やや気になりますので、
その辺りのことについて、補足質問をさせて下さい。

(2)の代替案として、恐らくob_start()を使う方法を提示頂いたのだと思いますが、
それがこの件でどのような理由から有用であるのかがイマイチよく分かりませんでしたので、
その点を教えて頂けたら嬉しく思います。

サイト内部からの遷移を調べる場合にのみ、このob_start()は使えるのだと思いますが、
サイト内部からの遷移を調べる場合、既に(2)の方法がありますので、ob_start()の方法はどのような意味で提示頂けたのかが分からずにおりました。
(1)や(2)の方法は、うしろを振り返ってfile_getする仕組みで、
一方、ob_start()とsessionを使った方法は、file_getしたデータを前へ送り出す仕組みだな~と、特には意味はありませんが思っていたりします。

ob_start()とsessionを使った方法でも、(2)と同様の結果が得られることは理解できますが、
その方法の意義と言いますか、有効性について知ることが出来れば嬉しいなと思っております。

またよろしければ、アドバイスをお願い致します。

補足日時:2009/09/19 14:43
    • good
    • 0
この回答へのお礼

わざわざすみません><
まずは簡単にお礼をさせて頂きます。

バッファリングというものの理解からせねば、、、ということで、
現在、ややモタついております。

>生成されたHTMLを取得する意図

HTMLの中からページタイトルを取得したいなと思っておりました。

tany180sxさんの回答の補足をして頂きありがとうございます。
バッファリングの理解がバシッと頭に入れば、説明頂いた内容も同様にバシッと入ると思われます。

なるべく独力で調べる、ということを実践しようと思っているため、
ここでの反応が少々悪くなっております。
ご心配をお掛けし、申し訳ございません。
またすぐに復帰しますので、その際にはまた宜しくお願いいたします。
いつも分かりやすい回答をありがとうございます。

お礼日時:2009/09/17 01:32

>ホゲホゲさんならば、どんな方法で対処しようと考えますでしょうか?



ん~tany180sxさんが書いた
>コマンド的に書くと
>> php file.php #実行して結果を表示
>> cat file.php #ソースを表示
これは理解されてますか?
スルーしているような気がしますが。
それプラス、PHPで相対パスを引いた場合に何が参照されるかは、分かりますか?
これが理解されていれば、(2)の方法は取れないことが分かると思います。

また、出力バッファリングの方法について、実際テストコードを書くなどして試してみて、何が起こるのかは確認されましたか?
この内容が分かれば、次に行える処理は見えてくると思います。


本件、行いたい処理の全体像がまったく見えないため、本当にその画面遷移がベストな方法なのかも判断つきませんし、そうせねばならない画面遷移について考えてみましたが、それを引き回して何かをする出来事に関しても思いつきませんでした。

いったい何を目的にその処理を行う必要が発生しましたか?
    • good
    • 0
この回答へのお礼

私の我が儘にお付き合い頂き、申し訳ありません。
そして、ありがとうございます。

>> php file.php #実行して結果を表示
>> cat file.php #ソースを表示

私からの文面的にはスルーと同じ反応でしたが、
私の中では、理解できているものと思い、
あえて、その理解した内容を披露することはしませんでした。

その理解したことを、ここで改めて書かせて頂くと、
既に書いたことの繰り返しになりますが、
前者は、PHPでの処理後、HTMLとして出力された文字列をfile_get
後者は、PHPソースをそのままfile_get
というようなこととして私は解釈しておりました。
しかし、ホゲホゲさんの反応からして、私のこの理解では不十分なのかもしれませんね。

>これが理解されていれば、(2)の方法は取れないことが分かると思います。

ん~、(1)と(2)の違いは、
file_get_contents()に与える引数のパス書式の違いにあるわけですが、
理由はともかく、(2)の方法だと問題なく動いたため、
これはパス書式に問題があるのだな、と推測していたわけです。
もっと言えば、確実視していました。

>出力バッファリングの方法

こちらはまだ確認しておりません。
案が一通り出そろった所で、全ての案についてテストしてみようと考えておりました。

>いったい何を目的にその処理を行う必要が発生しましたか?

アクセスの記録として、
どこからどこへと、ページ遷移したか、
を記録できたらと思っておりました。

では、「出力バッファリングの方法」について、調べて参ります!

お礼日時:2009/09/13 08:11

>つまり、PHP上でも、


>HTMLと関わるときのパス表記においては、
>「スキームから始まっていない相対パスがURIを指し示すことは」ありう>る、という感じでしょうか。

ありうります。
なんせ、PHPのほとんどの場合の最終目的というのが、動的にHTMLを生成することですから。
動的に画像を表示したい場合は、何らかの条件分岐を経て、変数にその画像のパスを代入しますし、動的にメニューなどのコンテンツのリンクを表示したい場合も条件分岐やループ構文などを使って、DBに設定したリンクを変数に代入して出力すると思います。
これらのパスはHTMLに表示させるために記述されている以上は、URIを指し示していることになります。

>世の中には、パス書式は、数通りあるかと思いますが、
>パスの具体例をざっと挙げて頂き、
>それらの中から、どれがURIで、どれがURIでないのか、
>線引きして頂けると、大変有り難いのですが、
数通り、ではすまないのではないでしょうか。
パスというもの自体が、ファイルやディレクトリを指し示すための書式というだけのものです。
URIかURIでないかの線引きなんて、その値がプログラムやそのときの使われ方次第です。これの具体例を挙げてみたところで意味無いと思います。
    • good
    • 0
この回答へのお礼

>これらのパスはHTMLに表示させるために記述されている以上は、URIを指し示していることになります。

この点は、後でジワジワ効いてきそうな知識だなと思いました。
(結構あるんです、後からジワジワ理解が深まるということが。)

>数通り、ではすまないのではないでしょうか。
>これの具体例を挙げてみたところで意味無い

そうでしたか~。笑
バカなことをお聞きし、まったくお恥ずかしい。

結局、何が知りたいのか分からなくなって来ました。笑

えっと、ページ遷移を記録する方法として、

回答NO.4で「出力バッファリングの制御で対処」の方法を教わり、
また、そこでの補足で私は「セッションによる方法」を考えました。
それと、回答NO.1の補足で書いた(2)の方法も、まだ可能性としてはありますね。

と、これらを踏まえ、
ホゲホゲさんならば、どんな方法で対処しようと考えますでしょうか?
もし何か良案などありましたら、教えて下さい^^

お礼日時:2009/09/13 04:21

専門家じゃないですが..


URIとはリソースを示すものであって
インターネット上の資源に限定されません。
ざっくり言うと<a href="">に収まるものはURI?
http:というスキームがあればHTTPという手段を使いますが、
./aaa.html ではスキームが省略された相対URIなので
リソースを得るための最もネイティブな手段=>ローカルファイルアクセス
となるんじゃないでしょうか?(最後適当

参考URL:http://www.w3.org/Addressing/schemes
    • good
    • 0
この回答へのお礼

こちらでも、お世話になります。

>URIとはリソースを示すものであって
>インターネット上の資源に限定されません。

んー、「インターネット上」という言葉の捉え方の問題でしょうか?
違ったら、すみません><

例えば、自分のPC内だけで完結している場合の、
リソースの置き場についても、URIと言うことがあると?

んー、だとすると、
http://e-words.jp/w/URI.html
の記事と矛盾することになりそうですよね?
(そんなことはない?!)

なんだか、よく分からなくなってきました。苦笑
ここで、思い切ったことを質問してもよろしいでしょうか。

世の中には、パス書式は、数通りあるかと思いますが、
パスの具体例をざっと挙げて頂き、
それらの中から、どれがURIで、どれがURIでないのか、
線引きして頂けると、大変有り難いのですが、
どなたか、お願いできますでしょうか…。

想定している回答は、このような感じです。↓

http://example.com/img/hoge.jpg →URI(絶対URI)
・/img/hoge.jpg →URI(相対URI)
・./hoge.jpg →同上
・hoge.jpg →
・../hoge.jpg →
・/home/user/public_html/img/hoge.jpg →
・..\Windows\img\hoge.jpg →
・などなど(他にも、まだまだあるかと思います…適宜、追加して頂きたいです)

お礼日時:2009/09/12 08:19

>もし仮に、私の利用するレンタルサーバがLinuxではなく、Winだった場合、


>そのときの、相対URIの区切り文字は、「¥」になるのでしょうか?

WindowsのPC上のローカルなパスは文頭で「URIではない」と説明しました。
URIでない以上、そこに記述されている相対パスも相対URIではありません(URIではないのですから)。また、URIは、URLの場合「/」で、URNの場合は「:」で、区切ると決められています。

その為、
>..\Windows\hogehogehoge.txt
と記述されていれば確実にURIの相対パスではないです。

その前提で、
『Windowsでは、パスの区切り文字が「\」ですが、march4さんが利用されているレンタルサーバはLinuxなので、パスの区切り文字は「/」です。
だからURIとLinuxのパスを混同するのだと思います。』
と記述させて頂きました。

>今、知りたいことは、
>URIと、そうじゃないパスの区別の仕方ですね。
PHP上で、スキームから始まっていない相対パスがURIを指し示すことはありません。
もしあるとしたら、PHPが挿入されているHTML部分で、リンクや画像などのリソースを参照するときか、それらを動的に切り替えるために用意した変数や定数に値があるときだけです。
    • good
    • 0
この回答へのお礼

>..\Windows\hogehogehoge.txt
と記述されていれば確実にURIの相対パスではないです。

WindowsOSのWebサーバでも、LinuxOSと同様に、
パスの区切り文字は「/」なのですね。
そのため、「¥」がパスの区切り文字に使われていたら、
それは常にURIではない、と判断できるわけですね。
(至極当たり前のことを確認していて、すみません。)

>スキームから始まっていない相対パスがURIを指し示すことはありません。

$path = "../db/test.sqlite";
または、
$path = "test.sqlite";

というようなパス形式は、
「スキーム(http等の文字列)」から始まっていない相対パスですよね。
「このような書式のパスが、『URI』を指し示すことはない」、と。
ふむ…。

>もしあるとしたら、~(以下略)

この辺り、ちょっと難しくて理解できませんでした><

つまり、PHP上でも、
HTMLと関わるときのパス表記においては、

「スキームから始まっていない相対パスがURIを指し示すことは」ありうる、という感じでしょうか。

下記の内容と、大きく関係していそうなことですよね??(恐らく)

(絶対アドレスの質問の際に頂いた回答の中から引用)
---mdp36さんの回答より-------
まず、HTMLのhrefやsrcに記述するのはすべてURIであると定められています。
それから、「スキーム://ホスト/URLパス」の形式のURI(Common Internet Schemeと言います)では、スキームやホストを省略した「相対URI」が許されています。
つまり、HTMLの属性値に書いてある「/img/hogehoge.gif」(絶対パス)や「hogehoge.gif」(相対パス)は相対URIとなります。
------------------------------

お礼日時:2009/09/12 07:42

>「URIで記述されていないもの(URIの集合の外側の集合)」が何なのか、


http://e-words.jp/w/URI.html
こちらの文章を読んでみてください。
「URIとは、インターネット上に存在する情報資源の場所を指し示す記述方式。」
では、
「C:\Windows\hogehogehoge.txt」
私の使用しているPCのCドライブのWindowsフォルダの中にあるhogehogehoge.txtです。
これは、インターネット上にありますか?
なので、これはURIという記述方式では記述出来ません。
つまり「URIで記述されていないもの」ですよね。

それで、これを、私のPCの「C:\apache」にインストールしてある、webサーバからfile_get_contentsやfopen関数で参照したい場合は、どのようにするか、ですがwebのルートが「C:\apache\public_html」だった場合、
<?php
$data = file_get_contents('C:\Windows\hogehogehoge.txt');
?>
と参照するか、あるいは、
<?php
$data = file_get_contents('..\Windows\hogehogehoge.txt');
?>
と参照します。

Windowsでは、パスの区切り文字が「\」ですが、march4さんが利用されているレンタルサーバはLinuxなので、パスの区切り文字は「/」です。
だからURIとLinuxのパスを混同するのだと思います。
    • good
    • 0
この回答へのお礼

>「インターネット上に存在する情報資源の場所」

インターネット上に、という所がポイントですね。
ということで、ホゲホゲさんの仰る「URIで記述されていないもの」
について理解することができました。

>だからURIとLinuxのパスを混同するのだと思います。

もし仮に、私の利用するレンタルサーバがLinuxではなく、Winだった場合、
そのときの、相対URIの区切り文字は、「¥」になるのでしょうか?

もし、そうだとすると、
その場合の相対URIは、
..\Windows\hogehogehoge.txt
のような書かれ方となるのでしょうか。

つまり、何が言いたいかと言いますと、
上記の私の考えがもし正しいとすると、
..\Windows\hogehogehoge.txt 
という書式を見ただけでは、
URIなのか、
それとも、URIではなく、ローカルのパスなのか、
その区別が付かない気がしたのですが、どうなのでしょう?
(また変なことを言って、ホゲホゲさんを困らせております。)

今、知りたいことは、
URIと、そうじゃないパスの区別の仕方ですね。

このことが分かり次第、前回頂いた回答へ戻り、
改めて補足をさせて頂きます。
(毎回、ごちゃごちゃとすみません><)

お礼日時:2009/09/12 00:29

>これは、そういった仕様なのでしょうか。


>file_get_contentsの仕様というより、
>パスの解釈的に、そうなるのは当然、ということなのでしょうか。
そういった仕様です。

http://www.php.net/manual/ja/function.fopen.php
fopenの説明部分ですが、(file_get_contentsはfopenの開いて取得して閉じるを一気にやるラッパー関数のようなものなので。)
「filename が "スキーム://..." の形式である場合、 それは URL とみなされ、PHP はそのプロトコルのハンドラ (ラッパーともいいます) を探します。」
となっており、http://から始まるものはURIとみなして外部に取得しにいきます。

PHPはURIで記述されていないものは全てローカルのファイルを取得しにいくと考えておいて問題ないと思います。
    • good
    • 0
この回答へのお礼

ホゲホゲさん、こんばんは。
今回もありがとうございます。

>PHPはURIで記述されていないものは全てローカルのファイルを取得しにいく

URIで記述されていないもの、とは、
例えば、どのような書式になりますでしょうか。
例をいくつか挙げて頂けると、大変助かります。

先日、質問させて頂いた絶対パス/絶対アドレスの件で、
>ルートディレクトリの先頭、かつ/から始まるパス→相対URIです。
>http://から始まるパス→(絶対)URIです。

といった回答をNO.3にて頂き、
それを元に、今回の回答でホゲホゲさんが仰る
「URIで記述されていないもの」
を考えてみたのですが、よく分からなくなってしまいました。^^;

私は、
URIというものはURLを部分集合として内に含む、大きな集合だと考えているため、
「URIで記述されていないもの(URIの集合の外側の集合)」が何なのか、
想像できずにいます。
(変なことを言っていたらすみません)

お礼日時:2009/09/11 21:48

たぶんもうおわかりと思いますが、


PHPを実行しているかしていないかの違いです。
コマンド的に書くと
> php file.php #実行して結果を表示
> cat file.php #ソースを表示
の違いです。

客観的に見てのアドバイスは、そもそもの設計を考え直した方がいいかと。
ページ遷移を記録したいならURIだけで済むでしょうし、
どうしてもHTMLの中身が欲しいなら、
出力バッファリングの制御で対処できるでしょう。

## 適当
ob_start();
print "<html>....</html>";
$html = ob_get_contents(); //HTMLを取得
ob_flush(); //HTMLを出力
//$htmlを解析してごにょごにょする
    • good
    • 0
この回答へのお礼

またしてもありがとうございます。

>どうしてもHTMLの中身が欲しいなら、
出力バッファリングの制御で対処できるでしょう。

どうしてもHTMLの中身が欲しいので、
「出力バッファリングの制御」という方法で検討してみたいと思います。
(内容はよく分かっておりませんが。笑)

ただ、今、ふと思ったのは、
セッションで送りつけるという方法もありだな、
と感じました。
説明しなくてもお分かりになるかと思いますが、
要するに、
「今まさにやってきたページ」から過去を振り返って
file_get_contentsするのではなく、
後のページから前のページへ移動するときに、
後から前へと、該当HTMLデータをセッションで飛ばす、
という感じです。
ページ遷移追跡は、自サイト内での話ですので、
この方法でも可能そうだな~と感じました。
(変なことを言っていたりして。。。苦笑)

それはさて置き、
話を、バッファリングの方法に戻しまして、、、
こちらはまだよく理解できていないのと、
本質問と、ややかけ離れてきているということもありますので、
しばらく、自分であれこれ調べた後、それでも分からないようでしたら、
別件で質問を新たにさせて頂こうかと思っております。

新たな指針を与えて下さり、どうもありがとうございます。
とても助かりました。^^

お礼日時:2009/09/11 01:19

>永久ループに陥りそうな処理ですね。


と、tany180sxさんが仰っている通りで、このロジックは、永久ループします。
取得するphpスクリプトの中でfile_get_contentsをしているので、取得してきたphpスクリプトの中でまたfile_get_contentsが走って~を繰り返すので、永久に処理が終わりませんね。

file_get_contentsは、相対パスで記述した場合、ローカルのデータファイルを取得してきます。
    • good
    • 0
この回答へのお礼

>取得してきたphpスクリプトの中でまたfile_get_contentsが走って~を繰り返すので、永久に処理が終わりません

確かに、そうですよね。笑
tany180sxさんの無限ループ発言を軽視しておりました。
tany180sxさん、お許しを^^;

>file_get_contentsは、相対パスで記述した場合、ローカルのデータファイルを取得してきます。

http://~ のパスを指定するのと、
相対パス とでは、
file_get_contentsの処理は異なるんですね~。

これは、そういった仕様なのでしょうか。
file_get_contentsの仕様というより、
パスの解釈的に、そうなるのは当然、ということなのでしょうか。
私に足りない理解の所在はどこにあるのでしょう…。

もし、客観的に観て、お分かりになるようでしたら、
教えて下さい。

また、私のしたいこと(ページ遷移を追う)を実現する場合、
(2)の方法で行えば良いということなのでしょうか。
(2)では、実現可能なので。

実際に、(2)で無限ループしない理由は、
スクリプトソースを、ソースとしては読み込まず、
文字情報として読み込むからなのですよね? (たぶん)
ここは是非確認しておきたい点だなと思います。

自サイト内におけるページ遷移を追う場合には、
(2)の方法でやれば良いということになんでしょうかね。

ちなみに、読み込む情報は、
ファイル内のHTMLに関する部分だけでして、
PHPのスクリプトソース部分がブラウザ上に表示されるわけではないので、
ご安心下さい。^^

今回も、ホゲホゲさんっ、どうもありがとうございます。

お礼日時:2009/09/11 00:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!