1

私は、4 つのサイズで合計 120k の約 30k の画像を含む成長中の Web サイトを持っています。私の現在の解決策はそれらをDBに保存することであり、スタックオーバーフローで読んだことから、これは非常に悪い考えのようです。

その理由がわかり始めています。パフォーマンスが大幅に低下していることに気付きました。明らかな解決策は、これらの画像をフォルダー設定に移動することだと思います。ユーザーIDをディレクトリ名として使用して、パブリックおよびプライベートサブディレクトリを作成したいと思います。

構造は次のようになります。

/54869
    /public
        /size_1/img1.jpg
        /size_2/img1.jpg
        /size_3/img1.jpg
        /size_4/img1.jpg
    /private
        /size_1/img2.jpg
        /size_2/img2.jpg
        /size_3/img2.jpg
        /size_4/img2.jpg

このプライベート フォルダを保護し、ファイルの所有者が許可を与えている場合にのみ、他のユーザーにアクセスを許可する最善の方法は何ですか?

また、ユーザーがフォルダーの内容を単純に表示できないようにしたいのですが、クライアント側でチェックを実行してこれを修正できると思います。

何か考えや提案はありますか?

4

2 に答える 2

2

そのフォルダに Web からアクセスできないようにすることができます (たとえば、フォルダを外部に配置するhtdocsか、.htaccess ルールを追加します)。

プライベート イメージへのすべてのリクエストを処理する PHP スクリプトを作成します。このスクリプトは、次のことを行う必要があります。

  • ユーザーが認証されているかどうかを確認する
  • ユーザーが要求された画像を表示する権限があるかどうかを確認します
  • 画像を開き、ブラウザーに出力します (コンテンツが画像として扱われるようにするには、正しい http ヘッダーを設定する必要があります)。

次に、HTML/secret_image.php?id=3で、画像のパスを指定するか、使用したい場合があります。/secret_image.php?p=/54869/public/size_1/img1.jpg

于 2012-06-23T16:37:13.077 に答える
0

これを試すことができます

imageViewer.php?imgID=XXX;     where XXX=hashFunction(salt.imgName)

そして、ユーザーに権限があるかどうかなど、 imageViewer.phpですべての処理を行います。

于 2012-06-23T16:35:00.107 に答える