1

写真1.jpg、2.jpg、3.jpgのフォルダがあります...ユーザーがwww.example.com/pictures/3.jpgのようなURLをブラウザに直接入力してその画像をロードしないようにする方法はありますか? ?

Web htmlで呼び出された場合は、画像を読み込む必要があります(<img href = ...)。

それは可能ですか?IIS URLリライトまたはその他の手法を使用していますか?

IIS7.5を使用しています。私の目標は、ユーザーに次の画像が表示されないようにすることです...名前をエンコードすることはできますが、1から1000までの古いデータベースがあり、ユーザーだけがURLを使用して閲覧しないようにしたいと思います。リファラーなしで...毎日1枚の写真を提供していて、残りの写真を見つけてほしくないからです...

それは可能ですか?

4

1 に答える 1

1

に依存することでURLの書き換えを試すことができますが、これHTTP_REFERRERは常に正確であるとは限らず、一部のブラウザのユーザーがサイトの画像を表示できない可能性があります。

私があなたなら、すべての画像をWebディレクトリの外に移動して(または、できればpicturesフォルダを完全にブロックして)、image.phpという名前のphpスクリプトを作成します。

<?php

define('NUM_IMAGES', 1000);

header('Content-Type: image/png');

$image = imagecreatefromjpeg('pictures/'.((int)(time()/86400)%NUM_IMAGES+1).'.jpg');
imagepng($image);

?>

上記のスクリプトは、ユーザーのブラウザに画像を出力します。この画像は、1日1回次の画像に順番に変更され、次のように使用できます。<img src="image.php" />

次に、画像フォルダがブロックされているため、他の画像を誰も見ることができません。その後、引き続きimage.phpを直接リクエストできますが、その日の画像のみが表示されます。

1日に1回自動的に回転するのではなく、表示する画像を手動で制御したい場合は'.((int)(time()/86400)%1000+1).'、を表示する画像の番号に置き換えることもできます。

自動的に回転させたいが、更新する時間を制御したい場合は、次のtime()ようにオフセットを追加できます。((time()+$offset)/86400)

于 2011-07-24T20:26:52.300 に答える