영카트 다중DB 상품 등록시 질문 드립니다.

영카트 다중DB 상품 등록시 질문 드립니다.

QA

영카트 다중DB 상품 등록시 질문 드립니다.

본문

안녕하세요. 제가 영카트로 A,B쇼핑몰 두개를 만들었는데요 A쇼핑몰을 메인으로 잡고 A에 상품을 등록하면 B에도 같이 등록이 되게 하고 있습니다. 현재는 상품을 등록하면 A,B동시에 등록은 되는 상태까진 작업이 되어있는데요 문제는 이미지가 등록이 되지 않고 있습니다. A쇼핑몰에는 이미지가 정상적으로 업로드가 되고 shop_order테이블에 파일명도 저장이 되어서 B쇼핑몰은 파일 업로드가 안되어 상품 이미지 경로를 A쇼핑몰의 url과 경로를 소스에 강제로 넣어서 A쇼핑몰의 이미지를 불러올 생각을 했습니다. 그런데 A쇼핑몰 shop_order테이블에는 파일명이 저장이 되는데 B쇼핑몰에는 파일명이 저장이 안되네요.....다른 정보는 다 이상없이 저장이 되는데 파일명만 저장이 안되고 있습니다.....ㅠㅠ

일단 제가 작업한 소스부터 보여드릴께요. 모두 A쇼핑몰에서 작업했습니다.

 

goods_form_update.php


<?php
include_once("./_common.php");
check_demo();
check_admin_token();
// input vars 체크
check_input_vars();
$upl_dir = TB_DATA_PATH."/goods";
$upl = new upload_files($upl_dir);
if(!$_POST['gname']) {
    alert("상품명을 입력하세요.");
}
if(!$_POST['new_cate_str']) {
    alert("카테고리를 하나이상 선택하세요.");
}
// 관련상품을 우선 삭제함
sql_query(" delete from shop_goods_relation where gs_id = '$gs_id' ");
// 관련상품의 반대도 삭제
sql_query(" delete from shop_goods_relation where gs_id2 = '$gs_id' ");
// 관련상품 등록
$gs_id2 = explode(",", $gs_list);
for($i=0; $i<count($gs_id2); $i++)
{
    if(trim($gs_id2[$i]))
    {
        $sql = " insert into shop_goods_relation
                    set gs_id  = '$gs_id',
                        gs_id2 = '$gs_id2[$i]',
                        ir_no = '$i' ";
        sql_query($sql, false);
        // 관련상품의 반대로도 등록
        $sql = " insert into shop_goods_relation
                    set gs_id  = '$gs_id2[$i]',
                        gs_id2 = '$gs_id',
                        ir_no = '$i' ";
        sql_query($sql, false);
    }
}
// 기존 선택옵션삭제
sql_query(" delete from shop_goods_option where io_type = '0' and gs_id = '$gs_id' ");
$option_count = count($_POST['opt_id']);
if($option_count) {
    // 옵션명
    $opt1_cnt = $opt2_cnt = $opt3_cnt = 0;
    for($i=0; $i<$option_count; $i++) {
        $opt_val = explode(chr(30), $_POST['opt_id'][$i]);
        if($opt_val[0])
            $opt1_cnt++;
        if($opt_val[1])
            $opt2_cnt++;
        if($opt_val[2])
            $opt3_cnt++;
    }
    if($opt1_subject && $opt1_cnt) {
        $it_option_subject = $opt1_subject;
        if($opt2_subject && $opt2_cnt)
            $it_option_subject .= ','.$opt2_subject;
        if($opt3_subject && $opt3_cnt)
            $it_option_subject .= ','.$opt3_subject;
    }
}
// 기존 추가옵션삭제
sql_query(" delete from shop_goods_option where io_type = '1' and gs_id = '$gs_id' ");
$supply_count = count($_POST['spl_id']);
if($supply_count) {
    // 추가옵션명
    $arr_spl = array();
    for($i=0; $i<$supply_count; $i++) {
        $spl_val = explode(chr(30), $_POST['spl_id'][$i]);
        if(!in_array($spl_val[0], $arr_spl))
            $arr_spl[] = $spl_val[0];
    }
    $it_supply_subject = implode(',', $arr_spl);
}
// 상품 정보제공
$value_array = array();
for($i=0; $i<count($_POST['ii_article']); $i++) {
    $key = $_POST['ii_article'][$i];
    $val = $_POST['ii_value'][$i];
    $value_array[$key] = $val;
}
$it_info_value = addslashes(serialize($value_array));
unset($value);
if($_POST['simg_type']) { // URL 입력
    $value['simg1'] = $_POST['simg1'];
    $value['simg2'] = $_POST['simg2'];
    $value['simg3'] = $_POST['simg3'];
    $value['simg4'] = $_POST['simg4'];
    $value['simg5'] = $_POST['simg5'];
    $value['simg6'] = $_POST['simg6'];
} else {
    for($i=1; $i<=6; $i++) {
        if($img = $_FILES['simg'.$i]['name']) {
            if(!preg_match("/\.(gif|jpg|png)$/i", $img)) {
                alert("이미지가 gif, jpg, png 파일이 아닙니다.");
            }
        }
        if($_POST['simg'.$i.'_del']) {
            $upl->del($_POST['simg'.$i.'_del']);
            $value['simg'.$i] = '';
        }
        if($_FILES['simg'.$i]['name']) {
            $value['simg'.$i] = $upl->upload($_FILES['simg'.$i]);
        }
    }
}
$value['mb_id']            = $_POST['mb_id']; //업체코드
$value['gname']            = $_POST['gname']; //상품명
$value['isopen']        = $_POST['isopen']; //진열상태
$value['explan']        = $_POST['explan']; //짧은설명
$value['keywords']        = $_POST['keywords']; //키워드
$value['admin_memo']    = $_POST['admin_memo']; //관리자메모
$value['memo']            = $_POST['memo']; //상품설명
$value['goods_price']    = conv_number($_POST['goods_price']); //판매가격
$value['supply_price']    = conv_number($_POST['supply_price']); //공급가격
$value['normal_price']    = conv_number($_POST['normal_price']); //시중가격
$value['gpoint']        = get_gpoint($value['goods_price'],$_POST['marper'],$_POST['gpoint']);
$value['maker']            = $_POST['maker']; //제조사
$value['origin']        = $_POST['origin']; //원산지
$value['model']            = $_POST['model']; //모델명
$value['opt_subject']    = $it_option_subject; //상품 선택옵션
$value['spl_subject']    = $it_supply_subject; //상품 추가옵션
$value['ppay_type']        = $_POST['ppay_type']; //수수료적용타입
$value['ppay_rate']        = $_POST['ppay_rate']; //수수료구분
$value['ppay_fee']        = is_array($_POST['ppay_fee'])?implode(chr(30), $_POST['ppay_fee']) : '';
$value['ppay_dan']        = $_POST['ppay_dan'];
$value['stock_qty']        = conv_number($_POST['stock_qty']); //재고수량
$value['noti_qty']        = conv_number($_POST['noti_qty']); //재고 통보수량
$value['repair']        = $_POST['repair']; //A/S여부
$value['brand_uid']        = $_POST['brand_uid']; //브랜드주키
$value['brand_nm']        = get_brand($_POST['brand_uid']); //브랜드명
$value['notax']            = $_POST['notax']; //과세구분
$value['zone']            = $_POST['zone']; //판매가능지역
$value['zone_msg']        = $_POST['zone_msg']; //판매가능지역 추가설명
$value['sc_type']        = $_POST['sc_type']; //배송비 유형    0:공통설정, 1:무료, 2:조건부 무료, 3:유료
$value['sc_method']        = $_POST['sc_method']; //배송비 결제    0:선불, 1:착불, 2:사용자선택
$value['sc_amt']        = conv_number($_POST['sc_amt']); //기본 배송비
$value['sc_minimum']    = conv_number($_POST['sc_minimum']);    //조건 배송비
$value['sc_each_use']    = $_POST['sc_each_use']; //묶음배송불가
$value['info_gubun']    = $_POST['info_gubun']; //상품정보제공 구분
$value['info_value']    = $it_info_value; //상품정보제공 값
$value['info_color']    = gnd_implode($_POST['info_color']); //색상
$value['price_msg']        = $_POST['price_msg']; //가격 대체문구
$value['stock_mod']        = $_POST['stock_mod']; //수량형식
$value['odr_min']        = conv_number($_POST['odr_min']); //최소 주문한도
$value['odr_max']        = conv_number($_POST['odr_max']); //최대 주문한도
$value['buy_level']        = $_POST['buy_level']; //구매가능 레벨
$value['buy_only']        = $_POST['buy_only']; //가격공개 여부
$value['simg_type']        = $_POST['simg_type']; //이미지 등록방식
$value['sb_date']        = $_POST['sb_date']; //판매 시작일
$value['eb_date']        = $_POST['eb_date']; //판매 종료일
$value['ec_mall_pid']    = $_POST['ec_mall_pid']; //네이버쇼핑 상품ID
$value['update_time']    = TB_TIME_YMDHIS; //수정일시
if($w == "") {
    $value['gcode'] = $_POST['gcode']; //상품코드
    $value['reg_time'] = TB_TIME_YMDHIS; //등록일시
    insert("shop_goods", $value);
    $gs_id = sql_insert_id();
} else if($w == "u") {
    update("shop_goods", $value," where gcode = '$_POST[gcode]'");
}
// 기존 카테고리삭제
sql_query(" delete from shop_goods_cate where gs_id = '$gs_id' ");
// 중복되는 분류는 제거
$it_sca_tmp = "";
if($_POST['new_cate_str']) {
    $exp = explode(",", $_POST['new_cate_str']);
    $exp = array_unique($exp, SORT_STRING);
    $it_sca_tmp = implode(",", $exp);
}
// 다중 카테고리등록
if($it_sca_tmp) {
    $it_sca_list = explode(",", $it_sca_tmp);
    for($i=0; $i<count($it_sca_list); $i++) {
        $sql = " insert into shop_goods_cate
                    set gcate = '".trim($it_sca_list[$i])."',
                        gs_id = '$gs_id' ";
        sql_query($sql);
    }
}
// 선택옵션등록
if($option_count) {
    $comma = '';
    $sql = " insert into shop_goods_option
                    ( `io_id`, `io_type`, `gs_id`, `io_price`, `io_stock_qty`, `io_noti_qty`, `io_use` )
                VALUES ";
    for($i=0; $i<$option_count; $i++) {
        $sql .= $comma . " ( '{$_POST['opt_id'][$i]}', '0', '$gs_id', '{$_POST['opt_price'][$i]}', '{$_POST['opt_stock_qty'][$i]}', '{$_POST['opt_noti_qty'][$i]}', '{$_POST['opt_use'][$i]}' )";
        $comma = ' , ';
    }
    sql_query($sql);
}
// 추가옵션등록
if($supply_count) {
    $comma = '';
    $sql = " insert into shop_goods_option
                    ( `io_id`, `io_type`, `gs_id`, `io_price`, `io_stock_qty`, `io_noti_qty`, `io_use` )
                VALUES ";
    for($i=0; $i<$supply_count; $i++) {
        $sql .= $comma . " ( '{$_POST['spl_id'][$i]}', '1', '$gs_id', '{$_POST['spl_price'][$i]}', '{$_POST['spl_stock_qty'][$i]}', '{$_POST['spl_noti_qty'][$i]}', '{$_POST['spl_use'][$i]}' )";
        $comma = ' , ';
    }
    sql_query($sql);
}
 
 
//여기부터 B쇼핑몰 등록
 
$upl_dir = TB_DATA_PATH."/goods";
$upl = new upload_files($upl_dir);
if(!$_POST['gname']) {
    alert("상품명을 입력하세요.");
}
if(!$_POST['new_cate_str']) {
    alert("카테고리를 하나이상 선택하세요.");
}
// 관련상품을 우선 삭제함
sql_query2(" delete from shop_goods_relation where gs_id = '$gs_id' ");
// 관련상품의 반대도 삭제
sql_query2(" delete from shop_goods_relation where gs_id2 = '$gs_id' ");
// 관련상품 등록
$gs_id2 = explode(",", $gs_list);
for($i=0; $i<count($gs_id2); $i++)
{
    if(trim($gs_id2[$i]))
    {
        $sql = " insert into shop_goods_relation
                    set gs_id  = '$gs_id',
                        gs_id2 = '$gs_id2[$i]',
                        ir_no = '$i' ";
        sql_query2($sql, false);
        // 관련상품의 반대로도 등록
        $sql = " insert into shop_goods_relation
                    set gs_id  = '$gs_id2[$i]',
                        gs_id2 = '$gs_id',
                        ir_no = '$i' ";
        sql_query2($sql, false);
    }
}
// 기존 선택옵션삭제
sql_query2(" delete from shop_goods_option where io_type = '0' and gs_id = '$gs_id' ");
$option_count = count($_POST['opt_id']);
if($option_count) {
    // 옵션명
    $opt1_cnt = $opt2_cnt = $opt3_cnt = 0;
    for($i=0; $i<$option_count; $i++) {
        $opt_val = explode(chr(30), $_POST['opt_id'][$i]);
        if($opt_val[0])
            $opt1_cnt++;
        if($opt_val[1])
            $opt2_cnt++;
        if($opt_val[2])
            $opt3_cnt++;
    }
    if($opt1_subject && $opt1_cnt) {
        $it_option_subject = $opt1_subject;
        if($opt2_subject && $opt2_cnt)
            $it_option_subject .= ','.$opt2_subject;
        if($opt3_subject && $opt3_cnt)
            $it_option_subject .= ','.$opt3_subject;
    }
}
// 기존 추가옵션삭제
sql_query2(" delete from shop_goods_option where io_type = '1' and gs_id = '$gs_id' ");
$supply_count = count($_POST['spl_id']);
if($supply_count) {
    // 추가옵션명
    $arr_spl = array();
    for($i=0; $i<$supply_count; $i++) {
        $spl_val = explode(chr(30), $_POST['spl_id'][$i]);
        if(!in_array($spl_val[0], $arr_spl))
            $arr_spl[] = $spl_val[0];
    }
    $it_supply_subject = implode(',', $arr_spl);
}
// 상품 정보제공
$value_array = array();
for($i=0; $i<count($_POST['ii_article']); $i++) {
    $key = $_POST['ii_article'][$i];
    $val = $_POST['ii_value'][$i];
    $value_array[$key] = $val;
}
$it_info_value = addslashes(serialize($value_array));
unset($value);
if($_POST['simg_type']) { // URL 입력
    $value['simg1'] = $_POST['simg1'];
    $value['simg2'] = $_POST['simg2'];
    $value['simg3'] = $_POST['simg3'];
    $value['simg4'] = $_POST['simg4'];
    $value['simg5'] = $_POST['simg5'];
    $value['simg6'] = $_POST['simg6'];
} else {
    for($i=1; $i<=6; $i++) {
        if($img = $_FILES['simg'.$i]['name']) {
            if(!preg_match("/\.(gif|jpg|png)$/i", $img)) {
                alert("이미지가 gif, jpg, png 파일이 아닙니다.");
            }
        }
        if($_POST['simg'.$i.'_del']) {
            $upl->del($_POST['simg'.$i.'_del']);
            $value['simg'.$i] = '';
        }
        if($_FILES['simg'.$i]['name']) {
            //$value['simg'.$i] = $upl->upload($_FILES['simg'.$i]);  B쇼핑몰은 이미지 업로드 안되도록 주석처리
        }
    }
}
$value['mb_id']            = $_POST['mb_id']; //업체코드
$value['gname']            = $_POST['gname']; //상품명
$value['isopen']        = $_POST['isopen']; //진열상태
$value['explan']        = $_POST['explan']; //짧은설명
$value['keywords']        = $_POST['keywords']; //키워드
$value['admin_memo']    = $_POST['admin_memo']; //관리자메모
$value['memo']            = $_POST['memo']; //상품설명
$value['goods_price']    = conv_number($_POST['goods_price']); //판매가격
$value['supply_price']    = conv_number($_POST['supply_price']); //공급가격
$value['normal_price']    = conv_number($_POST['normal_price']); //시중가격
$value['gpoint']        = get_gpoint($value['goods_price'],$_POST['marper'],$_POST['gpoint']);
$value['maker']            = $_POST['maker']; //제조사
$value['origin']        = $_POST['origin']; //원산지
$value['model']            = $_POST['model']; //모델명
$value['opt_subject']    = $it_option_subject; //상품 선택옵션
$value['spl_subject']    = $it_supply_subject; //상품 추가옵션
$value['ppay_type']        = $_POST['ppay_type']; //수수료적용타입
$value['ppay_rate']        = $_POST['ppay_rate']; //수수료구분
$value['ppay_fee']        = is_array($_POST['ppay_fee'])?implode(chr(30), $_POST['ppay_fee']) : '';
$value['ppay_dan']        = $_POST['ppay_dan'];
$value['stock_qty']        = conv_number($_POST['stock_qty']); //재고수량
$value['noti_qty']        = conv_number($_POST['noti_qty']); //재고 통보수량
$value['repair']        = $_POST['repair']; //A/S여부
$value['brand_uid']        = $_POST['brand_uid']; //브랜드주키
$value['brand_nm']        = get_brand($_POST['brand_uid']); //브랜드명
$value['notax']            = $_POST['notax']; //과세구분
$value['zone']            = $_POST['zone']; //판매가능지역
$value['zone_msg']        = $_POST['zone_msg']; //판매가능지역 추가설명
$value['sc_type']        = $_POST['sc_type']; //배송비 유형    0:공통설정, 1:무료, 2:조건부 무료, 3:유료
$value['sc_method']        = $_POST['sc_method']; //배송비 결제    0:선불, 1:착불, 2:사용자선택
$value['sc_amt']        = conv_number($_POST['sc_amt']); //기본 배송비
$value['sc_minimum']    = conv_number($_POST['sc_minimum']);    //조건 배송비
$value['sc_each_use']    = $_POST['sc_each_use']; //묶음배송불가
$value['info_gubun']    = $_POST['info_gubun']; //상품정보제공 구분
$value['info_value']    = $it_info_value; //상품정보제공 값
$value['info_color']    = gnd_implode($_POST['info_color']); //색상
$value['price_msg']        = $_POST['price_msg']; //가격 대체문구
$value['stock_mod']        = $_POST['stock_mod']; //수량형식
$value['odr_min']        = conv_number($_POST['odr_min']); //최소 주문한도
$value['odr_max']        = conv_number($_POST['odr_max']); //최대 주문한도
$value['buy_level']        = $_POST['buy_level']; //구매가능 레벨
$value['buy_only']        = $_POST['buy_only']; //가격공개 여부
$value['simg_type']        = $_POST['simg_type']; //이미지 등록방식
$value['sb_date']        = $_POST['sb_date']; //판매 시작일
$value['eb_date']        = $_POST['eb_date']; //판매 종료일
$value['ec_mall_pid']    = $_POST['ec_mall_pid']; //네이버쇼핑 상품ID
$value['update_time']    = TB_TIME_YMDHIS; //수정일시
if($w == "") {
    $value['gcode'] = $_POST['gcode']; //상품코드
    $value['reg_time'] = TB_TIME_YMDHIS; //등록일시
    insert2("shop_goods", $value);
    $gs_id = sql_insert_id2();
} else if($w == "u") {
    update2("shop_goods", $value," where index_no = '$gs_id'");
}
// 기존 카테고리삭제
sql_query2(" delete from shop_goods_cate where gs_id = '$gs_id' ");
// 중복되는 분류는 제거
$it_sca_tmp = "";
if($_POST['new_cate_str']) {
    $exp = explode(",", $_POST['new_cate_str']);
    $exp = array_unique($exp, SORT_STRING);
    $it_sca_tmp = implode(",", $exp);
}
// 다중 카테고리등록
if($it_sca_tmp) {
    $it_sca_list = explode(",", $it_sca_tmp);
    for($i=0; $i<count($it_sca_list); $i++) {
        $sql = " insert into shop_goods_cate
                    set gcate = '".trim($it_sca_list[$i])."',
                        gs_id = '$gs_id' ";
        sql_query2($sql);
    }
}
// 선택옵션등록
if($option_count) {
    $comma = '';
    $sql = " insert into shop_goods_option
                    ( `io_id`, `io_type`, `gs_id`, `io_price`, `io_stock_qty`, `io_noti_qty`, `io_use` )
                VALUES ";
    for($i=0; $i<$option_count; $i++) {
        $sql .= $comma . " ( '{$_POST['opt_id'][$i]}', '0', '$gs_id', '{$_POST['opt_price'][$i]}', '{$_POST['opt_stock_qty'][$i]}', '{$_POST['opt_noti_qty'][$i]}', '{$_POST['opt_use'][$i]}' )";
        $comma = ' , ';
    }
    sql_query2($sql);
}
// 추가옵션등록
if($supply_count) {
    $comma = '';
    $sql = " insert into shop_goods_option
                    ( `io_id`, `io_type`, `gs_id`, `io_price`, `io_stock_qty`, `io_noti_qty`, `io_use` )
                VALUES ";
    for($i=0; $i<$supply_count; $i++) {
        $sql .= $comma . " ( '{$_POST['spl_id'][$i]}', '1', '$gs_id', '{$_POST['spl_price'][$i]}', '{$_POST['spl_stock_qty'][$i]}', '{$_POST['spl_noti_qty'][$i]}', '{$_POST['spl_use'][$i]}' )";
        $comma = ' , ';
    }
    sql_query2($sql);
}
if($w == "")
    goto_url(TB_ADMIN_URL."/goods.php?code=form&w=u&gs_id=$gs_id");
else if($w == "u")
    goto_url(TB_ADMIN_URL."/goods.php?code=form&w=u&gs_id=$gs_id$q1&page=$page&bak=$bak");
?>

 

global.lib.php


// DB 연결
function sql_connect($host, $user, $pass, $db=TB_MYSQL_DB)
{
    if(function_exists('mysqli_connect') && TB_MYSQLI_USE) {
        $link = mysqli_connect($host, $user, $pass, $db);
        // 연결 오류 발생 시 스크립트 종료
        if(mysqli_connect_errno()) {
            die('Connect Error: '.mysqli_connect_error());
        }
    } else {
        $link = mysql_connect($host, $user, $pass);
    }
    return $link;
}
function sql_connect2($host2, $user2, $pass2, $db2=TB_MYSQL_DB2)
{
    if(function_exists('mysqli_connect') && TB_MYSQLI_USE) {
        $link2 = mysqli_connect($host2, $user2, $pass2, $db2);
        // 연결 오류 발생 시 스크립트 종료
        if(mysqli_connect_errno()) {
            die('Connect Error: '.mysqli_connect_error());
        }
    } else {
        $link2 = mysql_connect($host2, $user2, $pass2);
    }
    return $link2;
}
// DB 선택
function sql_select_db($db, $connect)
{
    if(function_exists('mysqli_select_db') && TB_MYSQLI_USE)
        return @mysqli_select_db($connect, $db);
    else
        return _select_db($db, $connect);
}
// DB 선택
function sql_select_db2($db, $connect)
{
    if(function_exists('mysqli_select_db') && TB_MYSQLI_USE)
        return @mysqli_select_db($connect, $db);
    else
        return _select_db($db, $connect);
}
function sql_set_charset($charset, $link=null)
{
    global $tb;
    if(!$link)
        $link = $tb['connect_db'];
    if(function_exists('mysqli_set_charset') && TB_MYSQLI_USE)
        mysqli_set_charset($link, $charset);
    else
        mysql_query(" set names {$charset} ", $link);
}
// mysqli_query 와 mysqli_error 를 한꺼번에 처리
// mysql connect resource 지정 - 명랑폐인님 제안
function sql_query($sql, $error=TB_DISPLAY_SQL_ERROR, $link=null)
{
    global $tb;
    if(!$link)
        $link = $tb['connect_db'];
    // Blind SQL Injection 취약점 해결
    $sql = trim($sql);
    // union의 사용을 허락하지 않습니다.
    //$sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
    $sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);
    // `information_schema` DB로의 접근을 허락하지 않습니다.
    $sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
    if(function_exists('mysqli_query') && TB_MYSQLI_USE) {
        if($error) {
            $result = @mysqli_query($link, $sql) or die("<p>$sql<p>" . mysqli_errno($link) . " : " .  mysqli_error($link) . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
        } else {
            $result = @mysqli_query($link, $sql);
        }
    } else {
        if($error) {
            $result = _query($sql, $link) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
        } else {
            $result = _query($sql, $link);
        }
    }
    return $result;
}
function sql_query2($sql, $error=TB_DISPLAY_SQL_ERROR, $link=null)
{
    global $tb;
    if(!$link)
        $link = $tb['connect_db2'];
    // Blind SQL Injection 취약점 해결
    $sql = trim($sql);
    // union의 사용을 허락하지 않습니다.
    //$sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
    $sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);
    // `information_schema` DB로의 접근을 허락하지 않습니다.
    $sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
    if(function_exists('mysqli_query') && TB_MYSQLI_USE) {
        if($error) {
            $result = @mysqli_query($link, $sql) or die("<p>$sql<p>" . mysqli_errno($link) . " : " .  mysqli_error($link) . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
        } else {
            $result = @mysqli_query($link, $sql);
        }
    } else {
        if($error) {
            $result = _query($sql, $link) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
        } else {
            $result = _query($sql, $link);
        }
    }
    return $result;
}
 
function insert($table,$values)
{
    $count=count($values);
    if(!$count) return false;
    $i=1;
    while(list($index,$key)=each($values)){
        if($i==$count){
            $field=$field.$index;
            if($index=='passwd')
            {    $value=$value."password('".trim($key)."')";    }
            else
            {    $value=$value."'".trim($key)."'";    }
        }
        else{
            $field=$field.$index.",";
            if($index=='passwd')
            {    $value=$value."password('".trim($key)."'),";    }
            else
            {    $value=$value."'".trim($key)."',";    }
        }
        $i++;
    }
    $sql = "insert into $table ($field) VALUES ($value)";    // 실제 쿼리 생성
    return sql_query($sql);
}
function insert2($table,$values)
{
    $count=count($values);
    if(!$count) return false;
    $i=1;
    while(list($index,$key)=each($values)){
        if($i==$count){
            $field=$field.$index;
            if($index=='passwd')
            {    $value=$value."password('".trim($key)."')";    }
            else
            {    $value=$value."'".trim($key)."'";    }
        }
        else{
            $field=$field.$index.",";
            if($index=='passwd')
            {    $value=$value."password('".trim($key)."'),";    }
            else
            {    $value=$value."'".trim($key)."',";    }
        }
        $i++;
    }
    $sql = "insert into $table ($field) VALUES ($value)";    // 실제 쿼리 생성
    return sql_query2($sql);
}
 
function update($table,$values,$where="")
{
    $count=count($values);
    if(!$count)return false;
    $i=1;
    while(  list($index,$key)=each($values) ){
        if($i==$count)
        {
            if($index=='passwd')
            {    $value=$value.$index."=password('".trim($key)."') ";    }
            else
            {    $value=$value.$index."='".trim($key)."' ";    }
        }
        else
        {
            if($index=='passwd')
            {    $value=$value.$index."=password('".trim($key)."'), ";    }
            else
            {    $value=$value.$index."='".trim($key)."', ";    }
        }
        $i++;
    }
    $sql = "update $table SET $value ".$where;    // 실제 쿼리 생성
    return sql_query($sql);
}

function update2($table,$values,$where="")
{
    $count=count($values);
    if(!$count)return false;
    $i=1;
    while(  list($index,$key)=each($values) ){
        if($i==$count)
        {
            if($index=='passwd')
            {    $value=$value.$index."=password('".trim($key)."') ";    }
            else
            {    $value=$value.$index."='".trim($key)."' ";    }
        }
        else
        {
            if($index=='passwd')
            {    $value=$value.$index."=password('".trim($key)."'), ";    }
            else
            {    $value=$value.$index."='".trim($key)."', ";    }
        }
        $i++;
    }
    $sql = "update $table SET $value ".$where;    // 실제 쿼리 생성
    return sql_query2($sql);
}

 

common.php


connect_db = sql_connect(TB_MYSQL_HOST, TB_MYSQL_USER, TB_MYSQL_PASSWORD) or die('MySQL Connect Error!!!');
    $select_db  = sql_select_db(TB_MYSQL_DB, $connect_db) or die('MySQL DB Error!!!');
    $connect_db2 = sql_connect2(TB_MYSQL_HOST2, TB_MYSQL_USER2, TB_MYSQL_PASSWORD2) or die('MySQL Connect Error!!!');
    $select_db2  = sql_select_db2(TB_MYSQL_DB2, $connect_db2) or die('MySQL DB Error!!!');
    // mysql connect resource $tb 배열에 저장 - 명랑폐인님 제안
    $tb['connect_db'] = $connect_db;
    $tb['connect_db2'] = $connect_db2;

 

dbconfig.php


<?php
if(!defined('_TUBEWEB_')) exit;
define('TB_MYSQL_HOST', 'localhost');
define('TB_MYSQL_USER', '111111');
define('TB_MYSQL_PASSWORD', '123456');
define('TB_MYSQL_DB', '111111');
define('TB_MYSQL_SET_MODE', false);
 
define('TB_MYSQL_HOST2', 'localhost');
define('TB_MYSQL_USER2', '222222');
define('TB_MYSQL_PASSWORD2', '123456');
define('TB_MYSQL_DB2', '222222');
define('TB_MYSQL_SET_MODE2', false);
?>

 

goods_form_update의 


if($_POST['simg_type']) { // URL 입력
    $value['simg1'] = $_POST['simg1'];
    $value['simg2'] = $_POST['simg2'];
    $value['simg3'] = $_POST['simg3'];
    $value['simg4'] = $_POST['simg4'];
    $value['simg5'] = $_POST['simg5'];
    $value['simg6'] = $_POST['simg6'];
} else {
    for($i=1; $i<=6; $i++) {
        if($img = $_FILES['simg'.$i]['name']) {
            if(!preg_match("/\.(gif|jpg|png)$/i", $img)) {
                alert("이미지가 gif, jpg, png 파일이 아닙니다.");
            }
        }
        if($_POST['simg'.$i.'_del']) {
            $upl->del($_POST['simg'.$i.'_del']);
            $value['simg'.$i] = '';
        }
        if($_FILES['simg'.$i]['name']) {
            //$value['simg'.$i] = $upl->upload($_FILES['simg'.$i]);  B쇼핑몰은 이미지 업로드 안되도록 주석처리
        }
    }
}

 

이 부분이 문제 같은데 $_POST['simg1']을 찍어보면 아무것도 넘어오지 않습니다.

위의 A쇼핑몰 부분에서 찍어보면 파일명이 제대로 나오는데 말이죠;;;;

 

어디가 잘못되어서 A에는 파일명이 나오는데 B부분에서는 파일명이 안나오는걸까요;;;;

이 질문에 댓글 쓰기 :

답변 1

코드로 답을 드릴 내용은 아닌것같고

 

개념만 설명드리면

 

쇼핑몰A에 상품1을 등록하면

쇼핑몰B에 상품1을 복제등록(DB는 성공)

              이미지 등록은 쇼핑몰A의 이미지를 읽어서 

                   복제처리 ->등록기능과 유사

                     쇼핑몰B의 상품1에 해당되는 정보에 

                   복제시 생성한 이름기록

 

완료입니다.

 

실제 이미지 등록시 실패가 많이 나타날수있으니

천천히 테스트를 하시면서 등록처리하셔야 합니다.

  쇼핑몰 A 의 1에 등록된것을
쇼핑몰 B의 1로 복제를 하는게 가장 좋은데

변경이 발생할경우 또 복제를 해야 하는상황이되구요

한 서버라면
data 영역의 item 영역을 쇼핑몰 B에서 쇼핑몰A의 data/item 을 심볼릭링크로 보는방법도있고

처리/해결하신 방법대로 A의를 바라보게 하는것도 방법입니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 1,270
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT