2011-11-05 3 views
1

이전에 물어 보았던 a question에 대한 후속 조치를 원했습니다. 아직 답변 할 수 없습니다.php codeigniter 컨트롤러를 사용하여 디렉토리의 파일에 대한 액세스를 제한하는 방법

요약하면 www.mysite.com/uploads의 목표는 "업로드"를 PHP 컨트롤러와 디렉토리로 모두 사용하는 것입니다.

"업로드"컨트롤러 생성자에 인증을 쓰는 사용자 "anonymous"의 대답은 제가 시도한 것이지만 아직 나를 위해 작동하지 않습니다.

내가 "콘텐츠"라는 이름의 컨트롤러를 통해 자사의 src="" 디렉토리 위치를 포함하여 각 컨텐츠의 상세 정보를 반환하고있어 다음 www.mysite.com/content/3/2보기 파일에서

/content/account_id# (e.g., 3)/item_id# ((e.g., 2) 

을, 나는 콘텐츠를 재생하려면, 예를 들어, 비디오 파일, 위의 동영상 태그의 src 속성을 통해 이 경우 src="/uploads/3/2/my_video.m4v"입니다.

여기에 지금까지 내 업로드 컨트롤러 코드 : 당신이 "항목"테이블 쿼리에서 볼 수 있듯이, 나는 주어진 주어진 ACCOUNT_ID 소유하지 않는 경우 시나리오를 목표로하고있어

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; } 
    } 
} 

item_id를 사용하면 표시된 "업로드"하위 디렉토리에 대한 액세스 권한을 얻지 못합니다. 사람이, ACCOUNT_ID = 3 하지 단지 사용자가 www.mysite.com/uploads/3/2/my_video.m4v로 이동하는 경우, 그들은 여전히이 비디오를 액세스 할 수 있기 때문에

그러나,이 코드는 분명 아무것도하지 않습니다 (그것은 파이어 폭스, 사파리에 의해 다운로드,에 의해 재생됩니다 기본적으로 크롬에 의해).

의견이 있으시면 크게 감사드립니다!

답변

-1

.htaccess 파일을 사용하여 직접 액세스를 제한해야합니다.

그런 다음 사용자가 권한을 부여한 후 PHP를 통해 파일을 스트리밍하는 컨트롤러의 함수를 만들어야합니다.

+0

안녕하세요 minboost .htaccess 규칙을 작성하는 방법에 익숙하지 않습니다. 코드를 제공 할 의향이 있습니까? 감사! –

+0

이미 CI에 많은 htaccess 파일이 있습니다 (다른 폴더를 확인하십시오). 새로운 것을 만들 수 있습니다. 그냥'access deny all'을 넣으면됩니다. – minboost

+0

안녕하세요 minboost, 고마워요.하지만이 "access deny all"을 "업로드"디렉토리의 루트에 추가하면 내 "콘텐트"컨트롤러 PHP 스크립트가 말하는 것과 상관없이 거기에있는 모든 파일에 대한 액세스가 거부됩니다. 권한이 부여 된 사용자가 .htaccess 명령을 우회 할 수 있도록 PHP가 어떻게 보이는지 알려주실 수 있습니까? 대신 내 컨트롤러를 "업로드"라고해야합니까? 감사! –

관련 문제