file_get_contents неправильно отображает изображение

Я пытаюсь отображать общие сайты и URL-адреса как часть моего собственного сайта. Вот часть относительно простого кода, который я использую:

browse.php

<? $enteredurl = $_GET["url"]; $page = file_get_contents($enteredurl); echo $page; ?> 

Игнорируя тот факт, что некоторые ссылки / изображения не будут работать, если URls являются относительными, а не абсолютными, это работает отлично. Доступ к страницам осуществляется с помощью $ _GET, что-то вроде

browse.php? url = http://itracki.com

Веб-страница будет отображаться так, как ожидалось. Однако, когда я пытаюсь получить что-то еще, например изображение, я получаю что-то вроде этого, о котором я думаю, является двоичным или что-то еще?

browse.php? url = http://img.ruphp.com/php/favicon.png

 ‰PNG IHDRóÿa%IDAT8Ëc8sæÌJ0M ```ã3`xaÔ€aa]r#f.–ÄíNIEND®B`‚ 

Я искал онлайн и пытался изменить заголовки страниц, что-то вроде

 <? header('Content-type: image/png;'); ?> 

но я все еще получаю тот же перепутанный результат. Кто-нибудь знает, как я могу видеть изображение так, как если бы я просто обращался к нему, набрав в адресной строке « http://img.ruphp.com/php/favicon.png »?

Благодаря!

Попробуй это:

 <?php $img = 'http://img.ruphp.com/php/favicon.png'; $getInfo = getimagesize($img); header('Content-type: ' . $getInfo['mime']); readfile($img); ?> 

Вы должны использовать readfile () вместо file_get_contents () в этой ситуации, потому что readfile () будет отправлять содержимое файла непосредственно в браузер, а не хранить его в памяти для последующего извлечения, что и делает file_get_contents ().

Также обратите внимание, что тип файла извлекается динамически, так что вам не нужно беспокоиться о том, чтобы указать неправильный тип mime в заголовке. Некоторые изображения могут быть названы с расширением .png, но тип mime может быть чем-то другим, поэтому это исправляет эти проблемы.

Попробуй это

 $image = 'http://img.ruphp.com/php/favicon.png'; // Read image path, convert to base64 encoding $imageData = base64_encode(file_get_contents($image)); // Format the image SRC: data:{mime};base64,{data}; $src = 'data: '.mime_content_type($image).';base64,'.$imageData; // Echo out a sample image echo '<img src="',$src,'">'; 
 echo 'data:;base64,'.base64_encode(file_get_contents('http://img.ruphp.com/php/favicon.png'));