테스트 사이트 - 개발 중인 베타 버전입니다

[팬텀디자인] 영카트 상품 결제 이후 해당 상품 자료실 제작하기 (1부)

실제 상품 결제가 완료된 이후, 상품 구매자를 위한 자료실 만들기입니다.

현재 영카트5 팁자료실에 dhtml 에디터 적용이 안되어 그누보드5 팁자료실에 게시합니다. 문제 시 삭제하겠습니다.

 

기본 로직

- 기존 영카트 상품 테이블(g5_shop_item)에 있는 it_10_subj 컬럼과 it_10 컬럼을 활용하여 다운로드 링크로 활용함.

- 기존 it_10_subj 컬럼과 it_10 컬럼을 사용중이신 분들은 새로운 컬럼 2개를 생성해주시면 됩니다.

  * 주의점 : 새롭게 컬럼을 생성하실 경우 아래 진행과정 중 update 파일에서 파일을 추가해줄 때 SQL 업데이트 구문

에 해당 컬럼을 추가해주셔야 합니다.

컬럼명 용도
it_10_subj 다운로드 링크 저장
it_10 다운로드 링크 삭제(del)

 

1. 기존 /adm/shop_admin/itemform.php 파일 내 1697라인 부근 여분필드 시작 부분에서

 

[code]

<?php for ($i=1; $i<=10; $i++) { ?>

[/code]

 

부분을 아래와 같이 변경 합니다.

 

[code]

<?php for ($i=1; $i<=9; $i++) { ?>

[/code]

  

2. 앵커또한 추가해줘야 하니 /adm/shop_admin/itemform.php 파일188번째 라인쯤 상품이미지 상단에 자료업로드 앵커를 추가해줍니다.

 

[code]

<li><a href="#anc_sitfrm_sendcost">배송비</a></li>

<li><a href="#anc_sitfrm_download">자료 업로드</a></li>

<li><a href="#anc_sitfrm_img">상품이미지</a></li>

[/code]

 

3. 여분필드 10을 응용하여 자료 업로드를 위한 섹션을 만들어줍니다.

/adm/shop_admin/itemform.php 파일 내 1320번 라인 근처<section id="anc_sitfrm_img"> 코드 위쪽에 하단 코드를 추가해줍니다.

 

[code]

<section id="anc_sitfrm_download">

    <h2 class="h2_frm">자료 업로드</h2>

    <?php echo $pg_anchor; ?>

 

    <div class="tbl_frm01 tbl_wrap">

        <table>

        <caption>자료 업로드</caption>

        <colgroup>

            <col class="grid_4">

            <col>

        </colgroup>

        <tbody>

        <tr>

            <th scope="row"><label for="it_10_subj">자료 업로드</label></th>

            <td>

                <input type="file" name="it_10_subj" id="it_10_subj">

                <?php

                $it_download = G5_DATA_PATH.'/item/'.$it['it_10_subj'];

                $it_download_url = G5_DATA_URL.'/item/'.$it['it_10_subj'];

                $it_img_exists = run_replace('shop_item_image_exists', (is_file($it_download) && file_exists($it_download)), $it);

                if($it_img_exists) {

                  $upload_filename = explode('/', $it['it_10_subj']);

                  echo '<a href="'.$it_download_url.'"><p style="padding:2px 10px; display:inline-block; margin-right:10px; background:orange; color:white;">다운로드: '.$upload_filename[1].'</p></a>';

                ?>

                <label for="it_10"><span class="sound_only">자료 업로드 </span>파일삭제</label>

                <input type="checkbox" name="it_10" id="it_10" value="1">

                <?php } ?>

            </td>

        </tr>

        </tbody>

        </table>

    </div>

</section>

[/code]

 

4. 기존 여분필드로 사용하던 부분을 자료용으로 활용하기 위해서는 update 파일에서 파일로 사용하기 위한 작업을 해줘야합니다.

 

/adm/shop_admin/itemform.php 파일 38번째 줄 근처 코드 아래부터 하단 코드 추가

 

[code]

$it_img1 = $it_img2 = $it_img3 = $it_img4 = $it_img5 = $it_img6 = $it_img7 = $it_img8 = $it_img9 = $it_img10 = '';

 

위 코드를

 

$it_img1 = $it_img2 = $it_img3 = $it_img4 = $it_img5 = $it_img6 = $it_img7 = $it_img8 = $it_img9 = $it_img10 = $it_10_subj = '';

 

위 코드로 교체

 

    $sql = " select it_img1, it_img2, it_img3, it_img4, it_img5, it_img6, it_img7, it_img8, it_img9, it_img10

 

위 코드를

 

    $sql = " select it_img1, it_img2, it_img3, it_img4, it_img5, it_img6, it_img7, it_img8, it_img9, it_img10, it_10_subj

 

위 코드로 교체

[/code]

 

/adm/shop_admin/itemform.php 파일 55번째 줄 근처 코드 아래부터 하단 코드 추가

 

[code]

    $it_img10   = $file['it_img10'];

    $it_10_subj   = $file['it_10_subj']; // 추가되는 부분

}

 

$it_img_dir = G5_DATA_PATH.'/item';

 

${'it_10'} = ! empty($_POST['it_10']) ? 1 : 0; // 추가되는 부분

 

for($i=0;$i<=10;$i++){

    ${'it_img'.$i.'_del'} = ! empty($_POST['it_img'.$i.'_del']) ? 1 : 0;

}[/code]

 

/adm/shop_admin/itemform.php 파일 116번째 줄 근처 코드 아래에 하단 코드 추가

 

[code]

if ($it_img10_del) {

    $file_img10 = $it_img_dir.'/'.clean_relative_paths($it_img10);

    @unlink($file_img10);

    delete_item_thumbnail(dirname($file_img10), basename($file_img10));

    $it_img10 = '';

}

// 자료업로드 파일삭제 (추가되는 부분)

if ($it_10) {

    $it_10_subj = $it_img_dir.'/'.clean_relative_paths($it_10_subj);

    @unlink($it_10_subj);

    delete_item_thumbnail(dirname($it_10_subj), basename($it_10_subj));

    $it_10_subj = '';

}

[/code]

 

/adm/shop_admin/itemform.php 파일 210번째 줄 근처 코드 아래에 하단 코드 추가

 

[code]

if ($_FILES['it_img10']['name']) {

    if($w == 'u' && $it_img10) {

        $file_img10 = $it_img_dir.'/'.clean_relative_paths($it_img10);

        @unlink($file_img10);

        delete_item_thumbnail(dirname($file_img10), basename($file_img10));

    }

    $it_img10 = it_img_upload($_FILES['it_img10']['tmp_name'], $_FILES['it_img10']['name'], $it_img_dir.'/'.$it_id);

}

// 파일업로드 (추가되는 부분)

if ($_FILES['it_10_subj']['name']) {

    if($w == 'u' && $it_10_subj) {

        $it_10_subj = $it_img_dir.'/'.clean_relative_paths($it_10_subj);

        @unlink($it_10_subj);

        delete_item_thumbnail(dirname($it_10_subj), basename($it_10_subj));

    }

    $it_10_subj = it_down_upload($_FILES['it_10_subj']['tmp_name'], $_FILES['it_10_subj']['name'], $it_img_dir.'/'.$it_id);

}

[/code]

 

5. 마지막으로 upload_file 함수에 대한 정의가 필요합니다. /lib/shop.lib.php 파일 697번 라인 하단에 아래 코드를 추가해주세요.

 

[code]

// 파일을 업로드 함
function upload_file($srcfile, $destfile, $dir)
{
    if ($destfile == "") return false;
    // 업로드 한후 , 퍼미션을 변경함
    @move_uploaded_file($srcfile, $dir.'/'.$destfile);
    @chmod($dir.'/'.$destfile, G5_FILE_PERMISSION);
    return true;
}

// 상품 자료실 파일을 업로드 함
function it_down_upload($srcfile, $filename, $dir)
{
    if($filename == '')
        return '';


    if(!is_dir($dir)) {
        @mkdir($dir, G5_DIR_PERMISSION);
        @chmod($dir, G5_DIR_PERMISSION);
    }

    $prepend = '';

    $filename = $prepend.$filename;

    upload_file($srcfile, $filename, $dir);

    $file = str_replace(G5_DATA_PATH.'/item/', '', $dir.'/'.$filename);

    return $file;
}

[/code]

 

그러면 아래와 같이 자료 업로드 섹션이 추가됩니다.

 

1981878700_1651662751.8702.png

 

 

업로드/다운로드 및 파일삭제도 잘됩니다.

 

1981878700_1651662755.6627.png

 

 

DB 및 실제 FTP에도 잘 들어간게 확인됩니다.

 

1981878700_1651662760.4465.png1981878700_1651662763.1373.png

 

-----

 

위와같이 진행되셨다면 기초적인 상품 자료실 구축 1단계는 완료되었습니다.

 

금일 시간이 없는 관계로, 2부에서 이어서 진행하도록 하겠습니다.

 

감사합니다.

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 14개

언제나 감사합니다.
@월모 감사합니다.
우와, 정말 좋네요! 2부도 기대하겠습니다.
@매드캣 기대해주셔서 감사합니다^^
감사 합니다.(잘 안됨)
@들레아빠 막히는 부분이 있으시면 편하게 질문주셔도 됩니다.
@팬텀디자인 Fatal error: Uncaught Error: Call to undefined function it_down_upload() 정의가 안되어있다 합니다.
@들레아빠 아, lib에 추가되는 구문이 빠졌군요. 수정하여 재업로드 하였습니다.

/lib/shop.lib.php 파일 697번 라인 하단에 아래 코드를 추가해주세요.

[code]
function _callback_it_img_upload($matches){
return isset($matches[0]) ? base64_encode($matches[0]) : '';
} // 해당 코드 아래쪽에

// 파일을 업로드 함
function upload_file($srcfile, $destfile, $dir)
{
if ($destfile == "") return false;
// 업로드 한후 , 퍼미션을 변경함
@move_uploaded_file($srcfile, $dir.'/'.$destfile);
@chmod($dir.'/'.$destfile, G5_FILE_PERMISSION);
return true;
}

// 상품 자료실 파일을 업로드 함
function it_down_upload($srcfile, $filename, $dir)
{
if($filename == '')
return '';


if(!is_dir($dir)) {
@mkdir($dir, G5_DIR_PERMISSION);
@chmod($dir, G5_DIR_PERMISSION);
}

$prepend = '';

$filename = $prepend.$filename;

upload_file($srcfile, $filename, $dir);

$file = str_replace(G5_DATA_PATH.'/item/', '', $dir.'/'.$filename);

return $file;
}

[/code]
@팬텀디자인 해결 되었습니다. 대단히 감사 합니다.
@들레아빠 해결 되셨다니 다행입니다. 곧 2부 올리도록 하겠습니다.
@DawnDew 감사합니다.
멋진 프로그램 공개 해주셔서 감사합니다. ^^
@호텔천사 감사합니다.

게시판 목록

그누보드5 팁자료실

글쓰기
🐛 버그신고