애드온 : 외부 이미지 저장 애드온

제작자 : 카르마

수정자 : 하얀마법 / 배포자 : tofinder

표기버전 : 0.4.7

설치경로 : ./addons/auto_outimage/

 

네번째 팁인데 그렇게 도움되는 건 없습니다;;

 

PHP에서 이미지의 URL 노출과 다운로드를 막아보자

http://b.redinfo.co.kr/21

 

이미지를 가져오려고 하다보면 확장자를 jpg, gif, png 등 정상적으로 좀 쉽게 작성해둔 곳도 있으나,

이미지를 못 가져가게 하려고 막아놓은 곳도 있습니다.

확장자를 asp, jsp, php 등으로 꾸미고 이미지를 출력해주는 곳이 있는데,

그런 경우 다시 기본 확장자를 이미지 확장자로 변경해서 해줘야 합니다.

이 역할을 

$ri_localfile = geRitLocalFile($src,$ri_avoid_domain,'Y');

이 부분에서 확인해볼 수 있는데요,

ri_localfile은 가져오는 이미지 경로를 추출하는 역할을 합니다.

이 기능을 담당하는 것이 geRitLocalFile()이라는 함수인데, php 기본 함수가 아니라,

auto_outimage.func.php 에서 정의된 자체 함수입니다. (함수라고 표현하는 게 맞는지는 잘 모릅니다만;)

 

이제 이 geRitLocalFile()에 대해서 알아보기로 합니다. ㅠㅠ

 

function geRitLocalFile($src,$ri_avoid,$permanent='N') {
   $url = parse_url($src);
   $domain = str_ireplace('www.','',$url['host']);
   $path_parts = pathinfo($url['path']);
   $dir = $path_parts['dirname'];
   $fn = $path_parts['basename'];

       if(in_array($domain,$ri_avoid)) return $src;

   $dir =  cleanUrlRi($dir);
   $fn = cleanUrlRi($fn);

   if($permanent == 'Y') $f = './files/attach/outimage/';
       else $f ='./files/cache/outimage/';
       $tmp_folder = sprintf('%s%s%s',$f.$domain,$dir);
   if(!is_dir($tmp_folder)) FileHandler::makeDir($tmp_folder);
       $tmp_file = sprintf('%s%s%s/%s',$f,$domain,$dir,$fn);
   if(!preg_match("/\.(jpg|png|jpeg|gif|php)$/i",$tmp_file)) $tmp_file = $tmp_file.".gif";
   if(file_exists(realpath($tmp_file))) return str_replace('./','',$tmp_file);
       else if(FileHandler::getRemoteFile($src, $tmp_file)) return str_replace('./','',$tmp_file);
   else return $src;
   }

 

(아직 작성 중입니다...)

 

이온디

profile
이온디는 라이믹스를 비롯한 다양한 CMS의 시드뱅크를 꿈꿉니다. 여러분들이 사랑하는 웹소스를 언제든지 사용할 수 있게 하기 위해 이온디는 매일 소스코드를 유지보수하고 있으며, 언제든지 다운로드할 수 있는 소스마켓을 운영하고 있습니다.

#XE마켓 - 이온디스토어
https://eond.com/xemarket/

# XE/라이믹스 단톡방을 운영 중입니다. (비번: 2022)
https://open.kakao.com/o/giaKKnl

# XE/라이믹스 생활코딩 모듈 강좌입니다.
https://opentutorials.org/module/3774