외부이미지를 내계정으로 끌어오기 - 삭제지원 > etc

본문 바로가기
사이트 내 전체검색

etc

외부이미지를 내계정으로 끌어오기 - 삭제지원

페이지 정보

작성자 서방님 댓글 0건 조회 149회 작성일 06-11-17 13:36

본문

블로그 이용자들 또는 스크랩이 취미인분들에게 추천하는 소스입니다.
(손님에게 공개기능으로 쓰자니...계정 용량이 맘에 걸리는지라....ㅋㅋ)

html 태그를 직접 작성하거나 에디터를 이용하여 게시판 또는 블로그에 글 작성시 이미지를 삽입하면
<img src="이미지 주소"> 이런식으로 저장이 되지요, 그쵸?

그때 저 이미지의 주소가 외부계정일경우 읽어다가 본인의 계정에 저장해주고 글 내용에서 주소를 계정에 저장된 위치로 바꿔줍니다.

다른곳에서 긁어다가 붙여넣기했는데 나중에 링크된 이미지가 없어져서 엑박으로 나오는 일이 더이상은 없겠죠? ^^

아차차...숨겨진 뽀나스 기능!
* 외부링크를 막아둔 네이버 그리고 싸이의 이미지도 잘~ 저장됩니다 ^^

원리:

  • 글내용의  html 소스를 입력받아 img 태그의 src 만 뽑아와서 외부이미지라면 긁어서 계정에 저장하고나서 img 태그의 src 를 계정에 있는 화일의 주소로 교체해줍니다.이때 싸이의 이미지는 싸이에 로그인 한뒤 저장하는 방식입니다.

설치법:

  • imageSaver.zip 을 다운받고 그 안에 화일들(2개)을 임의의 폴더에 풀어넣어줍니다.
     
  • imagesaver.php 를 여시고 주석을 참고하시면서 2곳(6줄 & 104줄 이하)에 설정 정보를 넣어줍니다.
    (경로, 아이디, 도메인 등등... 이때 계정에 이미지 저장 폴더생성및 권한설정도 잊지 마시길)
  • 설정이 끝났으면 2개의 화일을 계정에 아무대나 원하는곳에 업로드 합니다.

사용법:

  • 글을 DB 에 저장시키는 기능을 하는 화일에
        include "imagesaver.php";
    해줍니다. (이때 imagesaver.php 의 경로에 주의! 어디다 업로드 했느냐에 따라 다르겟죠?)
  • 예를 들어 $memo 라는 변수에 글 내용이 있다면 그 내용이 DB 에 들어가기 직전에
        $memo= saveRemoteImage($memo);
    라고 처리해줌으로서 외부이미지를 저장시켜줍니다.
  • 이미지가 크거나, 많거나...기타 등등~ 글의 저장시간이 평소보다 길어지는점 유의하시구요.
    (당연한거죠? ^^)
  • 삭제를 담당하는 화일에도 역시
        include "imagesaver.php";
    해줍니다. (역시 imagesaver.php 의 경로에 주의! 어디다 업로드 했느냐에 따라 다르겟죠?)
  • 예를 들어 $s_data['memo'] 라는 변수에 삭제될 글의 내용이 있다면 DB 에서 삭제가 완료된 후에 
        deleteRemoteImage($s_data['memo']);
    라고 처리해줌으로서 외부이미지를 삭제시켜줍니다.

흠.. 아는데로 자세한 사용법 나갑니다.



1. 제로보드 사용자

    글작성 및 수정

        write_ok.php 화일에서...

        126줄 (원본기준) 에 있는
        $memo=addslashes($memo); 의 아랫줄에 다음과 같이 넣어줍니다.

        include "imagesaver.php";
        $memo = saveRemoteImage($memo);

        이때 본 기능을 관리자만 쓰고 싶다거나... 게시판별로 적용하고 싶다거나 할때는

        if ($member[is_admin] == 1) {
        ....
        }

        또는

        if ($id == "적용할 게시판 아이디") {
        ....
        }

        등의 간단한 if 구문으로 위에 추가한 2줄을 감싸주시면 됩니다.


    글 삭제

        1. delete_ok.php 화일에서...

        // 카테고리 필드 조절
        mysql_query("update $t_category"."_$id set num=num-1 where no='$s_data[category]'",$connect);

        의 다음줄에 아래처럼 넣어줍니다.

        include "imagesaver.php";
        deleteRemoteImage($s_data['memo']);


        2. list_all.php 화일에서...90줄의

        // 글삭제
        mysql_query("delete from $t_board"."_$id where no='$selected[$i]'") or Error(mysql_error());

        의 아랫줄에 아래처럼 넣어줍니다.

        include "imagesaver.php";
        deleteRemoteImage($temp['memo']);



2. 테터툴즈 사용자

    흠~ 테터를 좀더 잘 아시는 분의 지도가 있으면 좋겠군요...

    글작성 및 수정

        1. 새글작성시:
        /테터폴더/blog/owner/entry/add/index.php 화일의 193줄
        $content=mysql_escape_string(filterJavaScript-x-x($entry['content']));

        의 윗줄에...

        2. 수정시:
        /테터폴더/blog/owner/entry/update/item.php 화일의 247줄
        $content=mysql_escape_string(filterJavaScript-x-x($entry['content']));

        의 윗줄에...

        include "imagesaver.php";
        $entry['content'] = saveRemoteImage($entry['content']);

        를 넣어주고나서

        imagesaver.php 의 95줄에있는

        $str = addslashes($str); 를

        //$str = addslashes($str);

        이렇게 주석처리해주세요...


    글 삭제

        /테터폴더/blog/owner/entry/delete/item.php 화일의 225줄
        updateEntriesOfCategory($owner,$target['category']);

        의 아랫줄에...

        include "imagesaver.php";
        deleteRemoteImage($target['content']);

        라고 넣어주시면 됩니다.


3. 그누보드 사용자

    글작성 및 수정

        그누보드/bbs/write_update.php 의 186줄...

        if ($w == "" || $w == "r") 
        {
            if ($member[mb_id]) 
            {

        의 윗줄에 아래 두줄 추가하면 됩니다.

        include "imagesaver.php";
        $wr_content= saveRemoteImage($wr_content);

        if ($w == "" || $w == "r") 
        {
            if ($member[mb_id]) 
            {
        
        요렇게....


    글 삭제

        1. 그누보드/bbs/ 폴더안의 delete.php 에서

        // 게시글 삭제
        sql_query(" delete from $write_table where wr_parent = '$write[wr_id]' ");

        를 찾은뒤 그 윗줄에 다음 3줄을 추가해주시면 됩니다.

        $wrtemp = sql_fetch(" select wr_content as content from $write_table where wr_id = '$write[wr_id]' ");
        include "imagesaver.php";
        deleteRemoteImage($wrtemp['content']);

        2. 그누보드/bbs/ 폴더안의 delete_all.php 에서

        // 사용자 코드 실행
        @include_once("$board_skin_path/delete_all.skin.php"); 를 찾아 그 아래에
 
        include_once "imagesaver.php"; 

        를 넣어주세요. 그리고 나서...

        // 게시글 삭제
        sql_query(" delete from $write_table where wr_parent = '$write[wr_id]' ");

        를 찾은뒤 그 윗줄에 다음 2줄을 추가해주시면 됩니다...
.
        $wrtemp = sql_fetch(" select wr_content as content from $write_table where wr_id = '$write[wr_id]' ");
        deleteRemoteImage($wrtemp['content']);

참고.1: 사이트에 접속하고 내용을 읽어오는 기능은 오픈소스의 Snoopy 클래스를 이용하여 구현하였습니다.

참고.2: 제로보드, 테터, 그누보드 이외에 다른곳에 설치하신분들 이곳에서 정보를 나눕시다. ^^

참고.3: 9월9일 이전에 다운받아서 설치하신분들은 새로 받아서 다시 설치하세요.

첨부파일

댓글목록

등록된 댓글이 없습니다.

Total 143건 8 페이지
게시물 검색

회원로그인

접속자집계

오늘
118
어제
84
최대
1,347
전체
154,489
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.