2011-03-21 3 views
1

그래서 저는 사용자가 더 작은 크기의 이미지 미리보기를 볼 수있는 웹 사이트를 구축하고 있으며 전체 해상도를 보려면 등록해야합니다.mod_rewrite 이미지 보호

이미지를 축소하지 않고 전체 이미지를로드하고 크기를 조정합니다. 이미지의 해상도가 낮기 때문에 문제는 아닙니다.

문제는 사용자가 이미지를 마우스 오른쪽 버튼으로 클릭하면 '새 탭에서 열기'를 선택하면됩니다. 브라우저에서 .jpg 및 .gif 파일을 태그에서 볼 수는 있지만 주소 표시 줄에 경로를 입력하려고하면 안되는 방식으로이를 비활성화하고 싶습니다.

저는 Apache에 있습니다.

이것이 가능합니까? 미리 감사드립니다.

답변

0

미리보기 이미지와 큰 이미지가 있어야합니다. 크기를 줄이면 크기가 작아집니다. 풀 사이즈 이미지는 실제로 컴퓨터에 이미 있습니다. 의 라인을 따라

+0

으로, 테스트. 내 청중은 컴퓨터가 전혀 좋지 않습니다. 그리고 심지어 그것이 두 번 일어날지라도 그것은 큰 문제가 아닙니다. 난 그냥 mod_rewrite 좀 더 보호 할 수 있는지 궁금 해서요. 그러나 당신의 대답에 감사드립니다. – priktop

0

뭔가 :

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://www.yourdomain.com/.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/.*$  [NC] 
RewriteRule ^/PublicFiles/*$ /page-about-direct-links.html 

검증되지 않은

+0

크리스, 컴퓨터 근처에 있지는 않지만 테스트를 통해 알려 드리겠습니다. – priktop

+0

"새 탭에서보기"를 방지하고 싶습니다. 리퍼러가 사이트에 계속 설정되어 있기 때문에 리퍼러를 이와 같이 확인하는 것은 작동하지 않습니다. 누군가가 정말로 원한다면 어떤 종류의 보호도 이길 수는 없습니다. 리퍼러는 클라이언트가 설정하므로 서버 상호 작용없이 자유롭게 변경할 수 있습니다. –

0

변경 방법 :

  1. 것은 당신이 작은 이미지를 표시하는 경우, 원본 이미지를 사용하지 않습니다. 이것은로드하는 데 시간이 오래 걸리고 나쁜 습관입니다. 대신 축소판을 사용하고 대역폭을 절약하고 페이지 속도를 높입니다.

  2. 원본 사진을 웹 폴더 옆으로 이동하십시오. 이렇게하면 링크를 통해 직접 액세스 할 수 없습니다.

  3. 사용자가 등록되면 원본 이미지를로드하는 PHP 스크립트를 만듭니다.

mod_rewrite는 사용자가 등록 또는 로그온했는지 확인할 수 없습니다. 아파치에 관해서는 "basic authentican"이 사용될 수 있습니다 (그러나 최선의 방법은 아닙니다).

function getImageFromOutside ($homePath, $file) 
{ 
    if (file_exists ($homePath . '/' . $file)) 
    { 
     $contents = file_get_contents ($homePath . '/' . $file); 
     return $contents; 
    } 
} 
$homePath = 'some_path/img'; 

if (isset ($_GET['uid'])) 
{ 
    $img = $_GET['uid'] . '.jpeg'; 
    header ('Content-type: image/jpeg'); 
    echo getImageFromOutside($homePath, $img); 
} else { 
    print_r ($_GET); 
    echo file_exists ($homePath . '/' . $file); 
} 

은 폴더 구조

  • 루트
    • IMG 정말 문제가되지 않습니다
    • publichtml
+1

나 자신에 관심이 있습니다.어떻게 사진을 웹 폴더 바깥으로 옮기지 만 사이트를 통해 볼 수 있습니까? – Kit

+0

로그와 같은 웹 폴더 외부에 폴더를 가질 수 있습니다. PHP는 가지고있는 것과 동일한 읽기/쓰기 권한을 가지고 있으며 해당 폴더의 파일에 액세스 할 수 있습니다. – Bakudan

+0

그래서 내 'publichtml'폴더 (내 루트 디렉토리) 외부에 이미지가있을 수 있으며 여전히 내 사이트에서 액세스 할 수 있습니까? 나는 그것을 어떻게 참조 할 것인가? – Kit