file_get_contents - также получите фотографии - PullRequest
0 голосов
/ 07 августа 2009

Привет всем! В последнее время я столкнулся с проблемой при кодировании на PHP и file_get_contents. Моя проблема в том, что когда я загружаю веб-сайт следующим образом:

<? echo file_get_contents($_GET['url']); ?>

Фотографии загружаемого мной сайта не отображаются. Например, когда я захожу в Google, картинки не отображаются. Это для каждого сайта, который я посещаю. Как я могу это исправить?

Ответы [ 4 ]

10 голосов
/ 07 августа 2009

HTML-страница, которую вы отображаете, предполагает, что у вас также есть доступные изображения, которых у вас нет, как на сервере исходной страницы (например, Google.com).

Самый быстрый способ убедиться, что все на HTML-странице загружается, это добавить <base href="http://www.google.com/" />. Это говорит браузеру вернуться к исходному пути для остальной части содержимого, включая изображения, CSS, скрипты и т. Д.

Вы захотите вставить это значение между <head></head> отображаемой HTML-страницы. Вы можете использовать регулярное выражение или Simple HTML DOM.

Надеюсь, что поможет

2 голосов
/ 07 августа 2009

Не делай этого. Вы крадете контент других веб-сайтов. Как вы заметили, это также не очень хорошо работает, поскольку все относительные URL не работают.

Можете ли вы использовать вместо этого iframe? Как в:

<iframe src="<?php echo htmlspecialchars($_GET['url']) ?>"></iframe>

Это лучше, так как вы не скрываете веб-сайт, который вы проксируете от конечного пользователя.

1 голос
/ 07 августа 2009

file_get_contents () делает то, что говорит, получает содержимое файла или URL, предоставленные в качестве аргумента. На странице HTML нет изображений внутри , они не являются содержимым страницы , на странице HTML есть только ссылки на внешние файлы, которые имеют собственный контент.

1 голос
/ 07 августа 2009

Я думаю, что это потому, что URL-адреса изображений являются относительными <img src="/img/foo.png">, что означает, что вместо этого он ищет изображение на вашем сервере и говорит googles. Чтобы исправить это, нужно просмотреть все URL-адреса в источнике и изменить их с относительного на абсолютный.

...