为了保证用户图像安全,我将它们存储在webroot之外,并在另一个“image.php”脚本中使用id检查它们。该脚本如下所示。
session_start();
require("scripts/sqlconnect.php");
$id = $_SESSION['id'];
$img = $_GET['id'];
$img = stripslashes($img);
$img = strip_tags($img);
$sql = mysql_query("SELECT * FROM photos WHERE id='$id'");
$salt = mysql_query("SELECT * FROM members WHERE id='$id'");
$salt = mysql_fetch_array($salt);
$salt = $salt['salt'];
while($row = mysql_fetch_assoc($sql)){
$imgfp = $row['filepath'];
if(hash('sha256', $imgfp.$salt)==$img){
$data = getimagesize($imgfp);
if(!$data){
header('HTTP/1.0 403 Forbidden');
die('The file you requested is not an image.');
}
header('Content-type: ' .$data['mime']);
header('Content-length: ' .filesize($imgfp));
readfile($imgfp);
}
}
我遇到的问题是使用FancyBox和这样的脚本。当我链接到这些图像(如下所示)时,FancyBox无法工作,它只是直接链接到图像。有没有人有FancyBox或类似脚本的经验,以满足这种方法调用图像?
<a class="fancybox" rel="'.$relgroup.'" href="image?id='.$photofp.'" title="'.$pinfo.'"><img class="tnail" src="'.$tnail.'" /></a>
为FancyBox添加的onload js是:
$(".fancybox")
.fancybox({
padding : 0,
'scrolling' : 'no',
helpers : {
title : {
type: 'outside'
},
}
});
答案 0 :(得分:1)
我在上面的评论中借助JFK 来解决这个问题
。我创建了一个新类.fancyboximg
,并将图像类型添加到该类中,并在开场文章中说明了原始的onload更改。
现在可以根据需要在FancyBox中打开图像!
$(".fancyboximg")
.fancybox({
'type' : 'image',
padding : 0,
'scrolling' : 'no',
helpers : {
title : {
type: 'outside'
},
}
});