1

PHPファイルを安全にアップロードしてそれらのファイルを取得することについて、私は本当に混乱しています。セキュリティ上の理由から、アップロードされた画像をドキュメント ルートの外に保存するように言われました。問題なくアップロードできますが、MYSQL と HTML の構造を考えると、これらの画像を提供する最善の方法がわかりません。これはこれを行う愚かな方法かもしれませんが、ここに私の問題があります:

ドキュメント ルートに 5 つの画像が保存されています。私の MYSQL データベースでは、その画像への URL パスを保存しています (例: www.mywebsite.com/images/123.jpg)。私の HTML インデックスは、MYSQL をクエリして画像パスを選択し、画像へのすべてのパスを一覧表示してから画像を表示します。

ただし、ドキュメント ルートの外に画像を保存しています (セキュリティ上の理由から)。www.mywebsite.com/images/outofroot.jpg のような URL パスを MYSQL に保存し、上記のように選択クエリを実行する方法はありますか?

4

1 に答える 1

0

あなたが言及したこれらの前述の「セキュリティ上の理由」が何であったか知りたいので、明確にできればそれは素晴らしいことです!

私のphpは少しさびていますが、私が覚えていることから、jpegに対して次のようにする必要があります。

header("Content-type: image/jpeg");
$img = imagecreatefromjpeg("/path/to/file.jpg");
imagejpeg($img);

まず、 をheaderjpeg 画像に合わせて設定します。次に、 を使用してイメージをメモリにロードしますimagecreatefromjpeg。最後に、画像を提供しますimagejpeg

この例は jpeg のみに限定されています。用途によっては、他のタイプが必要になる場合があります。いくつかのロジックを (演習として ;)) 記述して、これを他の型で機能させることができます。これを行う方法については、PHP ドキュメントの およびその他を参照してimagepngください。imagegif

ある種のセキュリティ チェックが必要な場合 (たとえば、ユーザーが画像を表示する権限を持っている必要がある場合) は、それらを作業ディレクトリの外に保存し、このようにロードすることをお勧めします。

ただし、提供している画像にアクセスするための許可チェックが必要ない場合は、仲介者に提供してもらうよりも、通常どおり提供する方がよいでしょう。

于 2012-10-26T04:36:49.543 に答える