2012-06-23 122 views
1

我有一個正在成長的網站,共有4種尺寸的30k圖片,共計120k。我目前的解決方案是將它們存儲在數據庫中,從我在堆棧中讀取的內容看來,這似乎是一個非常糟糕的主意。創建私人圖片文件夾?

我開始明白爲什麼。我注意到性能急劇下降。認爲顯而易見的解決方案是將這些圖像移動到文件夾設置,我想使用用戶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 

什麼是確保這個私人文件夾,並只提供其他用戶訪問該文件的所有者已授予權限的最好方法?

我也想阻止用戶查看任何文件夾的內容,但我想我可以執行一個檢查客戶端來解決這個問題。

任何想法或建議?

回答

3

您可能無法從網絡訪問該文件夾(例如,將文件夾放在htdocs之外或添加.htaccess規則)。

創建一個處理私人圖像的所有請求的PHP腳本。 這個腳本必須做到以下幾點:如果用戶通過認證

  • 檢查

    • 檢查用戶是否被授權查看所請求的圖像
    • 打開圖像並將其打印到瀏覽器(你需要設置正確的HTTP頭,以確保內容被視爲圖像)

    然後,在你的HTML,簡單地指向/secret_image.php?id=3也許你想使用的圖片的路徑/secret_image.php?p=/54869/public/size_1/img1.jpg

  • 0

    你可以試試這個

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

    ,做所有的處理在imageViewer.php一樣,如果用戶擁有權限或不!