屏蔽图像URL并使其在Web服务器上看起来像它

时间:2017-06-10 17:44:08

标签: php mysql

我如何在我的网站上创建一个名为banner.php的页面,并让该页面在我的数据库中查找一个横幅ID(已经知道如何查找并获取网址),但我将如何进行如果我想在其他人的网站上的标签中使用myurl.com/banner.php?bid=3,那么它就像是实际的图像目的地。

此致 贾罗德

任何可以帮助如何做到这一点的人都赞赏!

1 个答案:

答案 0 :(得分:1)

在banner.php中,您必须从其真实服务器实际加载图像并在banner.php中再次输出。请务必发送正确的Content-Type标头,以便浏览器将您的PHP文件作为图像。

你的banner.php最快的代码我可以想象一个jpeg-image可能看起来像这样:

<?php
$imageContents = file_get_contents('http://example.com/real-banner.jpg');
header('Content-Type: image/jpeg');
echo $imageContents;

当用户随后调用http://your-domain.com/banner.php时,它会在浏览器中显示为图像,而不知道其原始来源的位置。

<强>提示:

  • 根据图片类型,将标题内容类型更改为image/pngimage/gif
  • 如果您使用的是file_get_contents(),请确保您的服务器支持fopen wrappers,否则使用file_get_contents()中的网址将无效。请参阅Notes-Section of file_get_contents()
  • 从另一台服务器获取内容的另一种方法是PHP curl library

修改 如果您想输出原始图片所具有的相同标题,您可以遍历变量$http_response_header,该变量会在file_get_contents调用后自动填充标题。搜索Content-Type标题并输出相同的内容。

<?php
$imageContents = file_get_contents('http://example.com/real-banner.jpg');
// get the content type header out of the file_get_contents request
foreach ($http_response_header as $header) {
    if (strtolower(substr($header, 0, 13)) == 'content-type:') {
        $origContentTypeHeader = $header;
        break;
    }
}
header($origContentTypeHeader);
echo $imageContents;