我想跟進a question我以前問過我還不能回答。php codeigniter如何限制訪問目錄中的文件使用控制器
總而言之,www.mysite.com/uploads
的目標是讓「上傳」成爲一個php控制器和一個目錄。
用戶「匿名」給出的關於在「上傳」控制器構造函數中編寫一些認證的答案是我試圖做的,但對我而言還沒有工作。
我通過一個名爲「內容」控制器返回每個內容的詳細信息,包括其src=""
目錄位置:
/content/account_id# (e.g., 3)/item_id# ((e.g., 2)
在www.mysite.com/content/3/2
視圖文件,我喜歡玩的內容,例如,視頻文件,通過上述視頻標籤的src
屬性。在這種情況下,src="/uploads/3/2/my_video.m4v"
。
這是我上傳控制器代碼至今:
class Uploads extends CI_Controller {
function Uploads()
{
parent::__construct();
$account_id= $this->session->userdata('account_id'); // =3 in this example
$item_id=$this->uri->segment('3'); // =2 in this example
$this->db->select('*');
$this->db->from('items');
$this->db->where('account_id, $account_id)->where('item_id, $item_id);
$query=$this->db->get();
if(empty($query){ return false; }
else { return true; }
}
}
你可以從「項目」表查詢看到,我的目標,其中,如果給定ACCOUNT_ID不擁有一個給定的情景item_id,那麼他們無法訪問指定的「上傳」子目錄。
但是,此代碼顯然沒有做任何事情,因爲如果任何人,不只是ACCOUNT_ID = 3的用戶,去www.mysite.com/uploads/3/2/my_video.m4v
,他們仍然可以訪問此視頻(它是由火狐,Safari瀏覽器下載,並通過發揮通過鉻本地)。
任何想法可能會不勝感激!
嗨minboost,我不熟悉如何編寫.htaccess規則,您是否願意提供一些代碼?謝謝! –
CI中有很多htaccess文件(檢查不同的文件夾)。你可以創建一個新的,只要把'access deny all'放進去就可以了。 – minboost
您好minboost,謝謝但在我的「上傳」目錄的根目錄中添加「拒絕全部訪問」拒絕訪問那裏的所有文件,無論我的「內容」控制器PHP腳本說什麼。你能否告訴我一些PHP允許授權用戶繞過這個.htaccess命令的感覺?你是說我應該讓我的控制器被稱爲「上傳」,而不是?謝謝! –