-3

通过 - header('Content-Type: image/gif') 显示像图像一样的 PHP 页面非常简单,但这是我要实现的主要内容:-

它是一种图像内容类型,但也包含链接和元标记。

检查此处>带有链接的图像内容类型

4

1 回答 1

1

如果您转到图像并查看源代码(CTRL + U),您将看到它实际上是 HTML。他们使用 .htaccess 或路由将看似图像 URL ( https://media.giphy.com/media/l2SqcWByj8h7w0TEk/giphy.gif ) 的内容指向他们添加了链接和“元标记”的 HTML 文件.

您可以尝试这样的事情来获得类似的结果:

免责声明:此代码不安全,可能会被注入,因此您需要清理参数,检查文件请求是否实际上是图像文件等。

.htaccess

将所有对 yourdomain.com/media/an-image.gif 的请求定向到 media.php。

Options +FollowSymlinks
Options -Indexes
RewriteEngine On
RewriteRule ^media/(.*)\.(gif|jpg|png)$ media.php?image=$1&ext=$2

媒体.php

编写一个 php 脚本来处理请求,检查图像是否存在等并输出 HTML。

      if(is_file('/path/to/media/' . $_GET['image'] . '.' . $_GET['ext'])) {
?>   
         <html>
            <head>
                <title>IMAGE TITLE HERE</title>
                <!-- other head tags -->
            </head>
            <body>
                <div id="image_container">

                    <!-- You could load this from a database or from filename -->
                    <div class="title">IMAGE TITLE</div>

                    <!-- Quick way to load real image is to store the actual .gif in another file, say '/assets/' so you can load it without it being caught by .htaccess.
                    <img src="/assets/<?php echo $_GET['image'] . '.' . $_GET['ext'];?>"/>

                    <!-- Alternative way to to load image and output base64 encoded version (you would have to make a handler for each format -->
                    <img src="data:image/'<?php echo $_GET['ext'];?>';base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." "/>
                    <div class="link">
                        <a href="#linkhere">THIS IS THE IMAGE LINK</a>
                    </div> 
                </div>   
            </body>                  
         </html>            

<?php
         exit();

      }

   }


   // Redirect or return a 404 here.
   header("HTTP/1.0 404 Not Found");
   echo 'Not Found!';
   exit();
于 2017-11-07T12:35:33.110 回答