我正在尝试将通用网站和网址显示为我自己网站的一部分.这是我正在使用的相对简单的代码的一部分:
browse.php
$enteredurl = $_GET["url"];
$page = file_get_contents($enteredurl);
echo $page;
?>
如果URls是相对的而不是绝对的,忽略一些链接/图像不起作用的事实,这很好.使用$_GET访问页面,类似于
网页将按预期显示.然而,当我想要获得其他东西时,比如图像,我会得到类似这样的东西,我认为它是二元的还是什么?
‰PNG IHDRóÿa%IDAT8Ëc8sæÌJ0M ```ã3`xaÔ€aa]r#f.–ÄíNIEND®B`‚
我一直在网上寻找并尝试修改页面标题,例如
header('Content-type: image/png;'); ?>
但我仍然得到同样混乱的结果.如果我只是通过在地址栏中键入“http://images.itracki.com/2011/06/favicon.png”来访问它,有谁知道我是如何实际看到图像的?
谢谢!
解决方法:
试试这个:
$img = 'http://images.itracki.com/2011/06/favicon.png';
$info = getimagesize($img);
header('Content-type: ' . $info['mime']);
readfile($img);
?>
在这种情况下,您应该使用readfile()而不是file_get_contents(),因为readfile()会将文件内容直接发送到浏览器,而不是将其存储在内存中以供以后检索,这就是file_get_contents()所做的事情.
另请注意,动态检索内容类型,以便您不必担心在标题中错误地指定它.
某些图片的扩展名可能与其内容类型或mime类型不匹配,因此可以纠正这些类型的问题.
标签:file-get-contents,php
来源: https://codeday.me/bug/20190723/1510799.html