簡體   English   中英

php codeigniter如何使用控制器限制對目錄中文件的訪問

[英]php codeigniter how to restrict access to files in a directory using the controller

我想跟進先前提出的問題 ,但仍然無法回答。

總而言之, www.mysite.com/uploads uploads的目標是使“上載”既是php控制器又是目錄。

用戶“匿名”給出的有關在“上載”控制器構造函數中編寫一些身份驗證的答案是我試圖做的,但對我來說還行不通。

我通過名為“ content”的控制器返回每個內容的詳細信息,包括其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; }
    }
 }

從“ items”表查詢中可以看到,我的目標是以下情況:如果給定的account_id不擁有給定的item_id,則它們將無法訪問指示的“ uploads”子目錄。

但是,此代碼顯然沒有做任何事情,因為如果有人( 不僅是account_id = 3的用戶)訪問了www.mysite.com/uploads/3/2/my_video.m4v ,他們仍然可以訪問此視頻(已下載)由Firefox,Safari和chrome原生播放。

任何想法可能會不勝感激!

您需要使用.htaccess文件限制直接訪問。

然后,您必須在控制器中創建一個函數,該函數會在授權用戶后通過PHP流式傳輸文件。

暫無
暫無

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

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