我想继续问一个我之前问过的问题,但我仍然无法回答。
总而言之,www.mysite.com/uploads
的目标是使"uploads"同时作为php控制器和目录。
关于在"uploads"控制器构造函数中编写一些身份验证的用户"匿名"给出的答案是我试图做的,但它还没有为我工作。
我通过名为"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流式传输文件