php codeigniter как ограничить доступ к файлам в каталоге с помощью контроллера - PullRequest
2 голосов
/ 06 ноября 2011

Я хотел бы ответить на вопрос Ранее я задавал вопрос, на который все еще не могу ответить.

Подводя итог, цель для www.mysite.com/uploads состоит в том, чтобы иметь "загрузки""double как и php-контроллер, и каталог.

Ответ пользователя" anonymous "на написание какой-либо аутентификации в конструкторе контроллера" uploads "- это то, что я пытался сделать, но он пока не работаетдля меня.

Я возвращаю информацию о каждом контенте, включая его каталог src="", через контроллер с именем "content":

/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).

Будем очень благодарны за любые мысли!

1 Ответ

0 голосов
/ 06 ноября 2011

Вам необходимо ограничить прямой доступ с помощью файла .htaccess.

Затем вам нужно создать функцию в вашем контроллере, которая будет передавать файл через PHP после авторизации пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...