2009-07-29 139 views
3

我正在組建一個包含大量圖像的投資組合網站,其中一些圖像我不想被普通大衆查看。我想我會通過電子郵件向某人發送用戶名和密碼,他們可以通過該用戶名和密碼「登錄」來查看我的工作。限制訪問網站上的圖像

我已經看到了各種解決方案,包括以下使用php的readfile的「hide-an-image」問題。我也看到另一個使用.htaccess。

Use php's readfile() or redirect to display a image file?

我不是瘋了關於ReadFile的解決方案,因爲它似乎太慢,無法加載圖像,我希望能夠使用卡貝爾震盪波的FancyZoom,需要將圖像自由訪問, (他的圖書館希望鏈接到完整大小的圖像),這樣就排除了.htaccess。

回顧一下我想要做的事:

1)提供一個網站,我給用戶以自己的身份驗證的人,我想看着我的圖像的能力。 2)限制隨機Web用戶無法看到這些圖像。 3)使用FancyZoom炸開縮略圖。

我不在乎最終使用哪種技術 - Javascript,PHP等 - 什麼是最乾淨和最簡單的。

順便說一句,我是一個Java開發人員,而不是一個Web開發人員,所以我可能沒有正確地考慮這個問題。

+0

除非您發送大量圖像,否則readfile的性能不會成爲問題。對於投資組合網站來說,這完全沒問題。 – ceejayoz 2009-07-29 19:15:24

回答

6

而不是提供一個圖像的鏈接。提供一個鏈接到CGI腳本,它將自動提供圖像的正確標題和內容。

例如: image.php sample.jpg

然後,您可以確保它們已經過身份驗證(例如通過會話ID)作爲鏈接的一部分?

這將是標題的一部分,然後您的圖像數據可以跟隨。

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

編輯:如果它必須快,你可以用C/C++而不是php來編寫它。

+0

對,這基本上是讀文件解決方案。我沒有意識到的是我可以在包含我的圖像的a的href中傳遞image.php?sample.jpg(FancyZoom希望縮略圖圖像可以通過指向完整大小的圖像的鏈接進行包裝,傳遞image.php? full_size_sample.jpg在href中有訣竅! 謝謝。 – Ken 2009-07-29 19:34:19

3

使用.htaccess應該是最安全/最簡單的方法,因爲它建立在網絡服務器本身的功能上。

+0

我不想使用Auth指令,因爲那些彈出對話框。我看着使用以下: [碼開始] SetEnvIf之後Referer的 「http://www.mydomain.com/」 ALLOW_ACCESS 從所有 拒絕從ENV允許= ALLOW_ACCESS [代碼結束] 但是FancyZoom圖像請求未能通過SetEnvIf。 – Ken 2009-07-29 19:08:35

0

我不知道它是否適合你的需要,但我用TinyWebGallery,這是一個小畫廊應用沒有數據庫解決了類似的poblem(給圖片有限制的一羣人)。

您可以通過密碼允許訪問不同的目錄,您可以直接將圖片上傳到文件系統,因爲TinyWebGallery將在飛行中檢查新的目錄/圖片。它會生成縮略圖,併爲用戶提供評分/評論圖片的可能性(您可以禁用此功能)。

這不是最小的工具,但是我覺得它比使用apache指令更容易設置,它看起來好像裸照