2010-05-09 58 views
2

我有一個帶有登錄系統的PHP網站,並且試圖製作一個只有特定用戶名才能查看特定圖像的功能。我認爲我試圖做的事情比僅僅更改.htaccess文件更多地涉及到,因爲a)這將無助於辨別不允許用戶查看圖像,以及b)如果有人進入圖片的確切URL("directory/images/photos/230ru0q0238rn230nd_asdi0nqn8.jpg"),它們仍然可以查看圖像(因爲它是目錄中的物理文件,而不是數據庫中的文本等)。同樣,通過.htaccess進行限制會限制整個目錄或其中的所有文件,所以我無法弄清楚它是如何工作的。理想情況下,如果用戶的會話/用戶名有效,嘗試直接通過其直接URL訪問它們,所有圖像將被阻止,並且圖像只會在<img>標籤之間出現,否則會收到錯誤消息。PHP/Apache中的圖像顯示權限

我聽說過術語ACL,但我不確定這與我正在嘗試做什麼有關。

回答

0

你可以做的是創建一個簡單的上下文,輸出一個圖像作爲一個流。這是輸出的圖像依賴於ID(或一些識別符),例如:

viewImages.php?imageId=234643 

viewImages.php檢查用戶是否已登錄/授權(經由_SESSION $最有可能的),並且如果是這樣,它發送圖像到瀏覽器可能使用readfile

1

的授權和訪問控制列表方案可以不同,但​​要完成你的問題的基本目標:

  • 把圖像PHP可以讀取窗臺一個非web訪問的目錄。
  • 使用.htaccess重寫所有對腳本的請求(這可能會消除上述步驟,假設它拒絕直接訪問文件)。
  • 確認請求用戶可以查看請求的圖像。
  • 使用readfile()(或各種其他功能)輸出圖像。