通过PHP提供的图像不会加载到Shadowbox中

时间:2011-12-04 18:46:28

标签: php shadowbox

我一直在我的网站上使用shadowbox而没有问题,暂时没有问题。我创建了一个PHP文件来提供受保护文件夹中的媒体内容。以下是download.php中的内容:

<?php
$fullpath="/home/user/media/image1.jpg";
header("Content-Type: image/jpeg");
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: inline; filename='.basename($filename));    
header("Content-Length: " . filesize($fullpath));
readfile($fullpath);
exit;
?>

如果我使用IMG标签调用它或尝试下载图像,这种方法效果很好。例如:

<img src="download.php?id=123" />

但是,如果我使用shadowbox,浏览器会变暗,我甚至无法获得加载动画,也不会显示任何内容。

<a href="download.php?id=358" rel="shadowbox[test]"><img src="download.php?id=358"/></a>

上图中的图像显示正常,但单击时不会加载阴影框。

提前致谢!

2 个答案:

答案 0 :(得分:1)

问题 - 就你的情况而言 - Shadowbox在获取内容之前检查文件扩展名。如果您在shadowbox.js内搜索(尝试搜索img.ext),您会在某处找到它:

img.ext=["bmp","gif","jpg","jpeg","png"];

所以,您可以尝试添加PHP以稍微松开它,Shadowbox将很乐意抓住您的图像:

img.ext=["bmp","gif","jpg","jpeg","png","php"];

或者,您可以将您的php文件保存为jpg(听起来很奇怪,没有?)并强制服务器将其作为php文件处理。例如,如果您使用Apache并且允许.htaccess,则可以尝试使用以下内容创建.htaccess(或将这些行添加到现有.htaccess文件中):

<files download.jpg>
  ForceType application/x-httpd-php
</files>

答案 1 :(得分:-1)

不会在htaccess级别上关闭图像的php是一个巨大的安全隐患吗?