皆さん、こんにちは!最近、PHP と file_get_contents でコーディングするときに問題が発生しました。私の問題は、次のようなウェブサイトをロードするときです。
<? echo file_get_contents($_GET['url']); ?>
読み込んだウェブサイトの写真が表示されません。たとえば、Google にアクセスすると、写真が表示されません。これは私が訪問するすべてのウェブサイトのためのものです。どうすればこれを修正できますか?
皆さん、こんにちは!最近、PHP と file_get_contents でコーディングするときに問題が発生しました。私の問題は、次のようなウェブサイトをロードするときです。
<? echo file_get_contents($_GET['url']); ?>
読み込んだウェブサイトの写真が表示されません。たとえば、Google にアクセスすると、写真が表示されません。これは私が訪問するすべてのウェブサイトのためのものです。どうすればこれを修正できますか?
表示している HTML ページは、元のページのサーバー (Google.com など) には存在しないため、利用可能な画像もあると想定しています。
HTML ページのすべてが確実にロードされるようにする最も簡単な方法は、<base href="http://www.google.com/" />
. これにより、ブラウザは、画像、CSS、スクリプトなどを含む残りのコンテンツの元のパスに戻るように指示されます。
<head></head>
表示している HTML ページの の間に挿入する必要があります。正規表現または単純な HTML DOM を使用できます。
それが役立つことを願っています
これをしないでください。他の Web サイトのコンテンツを盗んでいます。お気づきのように、すべての相対 URL が壊れているため、うまく機能しません。
代わりに iframe を使用できますか? 次のように:
<iframe src="<?php echo htmlspecialchars($_GET['url']) ?>"></iframe>
これは、プロキシしている Web サイトをエンド ユーザーから隠していないため、より優れています。
file_get_contents()は、それが言うことを実行し、引数として提供されたファイルまたはUrlのコンテンツを取得します。HTMLページには画像が含まれていません。画像はページのコンテンツではありません。HTMLページには、独自のコンテンツを持つ外部ファイルへの参照のみが含まれています。
これは、画像の URL が相対的であるためだと思います<img src="/img/foo.png">
。つまり、代わりにサーバー上の画像を探して、googles と言います。これを修正するには、ソース内のすべての URL を調べて、相対 URL から絶対 URL に変更する必要があります。