簡體   English   中英

Codeigniter圖像顯示

[英]Codeigniter image display

我正在使用CodeIgniter構建一個簡單的圖像庫。 我希望畫廊是安全的,所以我不希望有人未經允許檢查我的圖像。

例如,如果圖像位置是http://www.mydomain.com/images/my_pic.jpg, 我不希望在瀏覽器中鍵入此URL時可以訪問該圖像,但是我希望通過諸如http之類的功能訪問該圖像 ://www.mydomain.com/controller/function/mypic.jpg ,可以在此處檢查權限。

我該如何實現?

將您的圖像不保存在公共目錄中。

您有公共目錄,在其中可以通過在瀏覽器中鍵入url訪問的公共文件和非公共文件夾(不能通過url訪問)。

另外,我敢打賭,CI具有路由系統,因此您不能只在瀏覽器中輸入任何路由並獲得訪問權限。

好吧,主要是將圖像存儲在非公共目錄中,並將其加載到控制器中。 例如/gallery/image/12 :controller gallery ,動作image和id為12。例如,您將從非公共文件夾/files/images/12.jpg獲取文件12.jpg。

如果您有更多指定的問題,請另外創建一個帖子。

您可以通過使用帶有以下內容的.htaccess文件來保護映像目錄:

DENY FROM ALL

然后使用常規控制器訪問圖像。 您需要更改文件頭,以便將PHP輸出解釋為圖像。

//CODE-IGNITER SPECIFIC STUFF

//INSIDE THE CONTROLLER FUNCTION FIRST CHECK USER PERMISSIONS, THEN ADD SOMETHING LIKE THIS:

$file = 'example.jpg'; //will basically end up being the argument which was passed to the controller

//define the output for the client as a jpg image
header('Content-Type:image/jpeg');
header('Content-Length: ' . filesize($file));

readfile($file); //reads the image file and send output to the client

為了更清楚地說明這一點,您將圖像的文件名作為參數傳遞給控制器​​,檢查用戶是否有權訪問該特定文件,如果是這種情況,則讓控制器將圖像返回給客戶端。 因此,發生的事情是PHP實際上返回了一個圖像。

您可以限制直接從URL訪問“ IMAGES”文件夾。 您可以為要限制的文件夾分配644權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM