1

ユーザーの画像を安全に保つために、私はそれらを 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'
            },
        }
    });
4

1 に答える 1

1

上記のコメントでJFKの支援を受けてこれを理解しました。

新しいクラスを作成し、.fancyboximgそのクラスに画像タイプを追加し、冒頭の投稿に記載されている元の onload の変更も加えました。

必要に応じて FancyBox で画像が開くようになりました。

$(".fancyboximg")
.fancybox({
    'type' : 'image',
    padding : 0,
    'scrolling' : 'no',
    helpers : {
        title   : {
        type: 'outside'
        },
    }
});
于 2012-10-10T16:44:33.053 に答える