【问题标题】:php codeigniter how to restrict access to files in a directory using the controllerphp codeigniter如何使用控制器限制对目录中文件的访问
【发布时间】:2011-12-22 19:19:51
【问题描述】:

我想跟进a question 我之前问过哪个我仍然无法回答。

总而言之,www.mysite.com/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,那么他们就无法访问指定的“上传”子-目录。

然而,这段代码显然没有做任何事情,因为如果任何人,只是 account_id=3 的用户,去www.mysite.com/uploads/3/2/my_video.m4v,他们仍然可以访问这个视频(它是由 Firefox 下载的,野生动物园,并由 chrome 原生播放)。

任何想法都将不胜感激!

【问题讨论】:

    标签: php .htaccess codeigniter directory


    【解决方案1】:

    您需要使用 .htaccess 文件来限制直接访问。

    然后你必须在你的控制器中创建一个函数,在用户被授权后通过 PHP 流式传输文件。

    【讨论】:

    • 嗨 minboost,我不熟悉如何编写 .htaccess 规则,您愿意提供一些代码吗?谢谢!
    • CI 中已经有很多 htaccess 文件(检查不同的文件夹)。您可以创建一个新的,只需将access deny all 放入其中即可。
    • 您好 minboost,谢谢,但是在我的“上传”目录的根目录中添加这个“拒绝所有访问”会拒绝访问那里的所有文件,无论我的“内容”控制器 PHP 脚本说什么。你能告诉我 PHP 应该是什么样子以允许授权用户绕过这个 .htaccess 命令吗?你是说我应该把我的控制器叫做“上传”吗?谢谢!
    • 任何人都不应该通过浏览器直接访问任何文件。在控制器中,您不是将用户重定向到文件位置,而是在 PHP 中打开文件并直接在 PHP 中流式传输(并设置正确的响应标头)
    • 感谢 minboost,所以要清楚,“上传”控制器构造函数的代码将包括检查数据库是否用户有权访问,如果有,则设置 headers(contentType: 'video/mp4')并调用 fopen('/uploads/3/2/my_video.m4v', 'r') 方法?
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多