영카트 분류관리 입력값 초기화 문제
본문
안녕하세요.
영카트 관리자화면 -> 분류관리
A라는 최고관리자가 입력한 분류값을
B라는 관리권한 부여를 받은 사람이 수정했을때
A가 입력한 정보값들이 모두 초기화됩니다.
B화면에서는 최소한의것들인 분류명, 출력순서등만 보이게 처리한 상태고
A화면에서는 전체관리 할 수 있도록 다 보이는 상태입니다.
<?php if ($is_admin == 'super') { ?>
B에게 숨긴 항목들~
<?php } ?>
위처럼 /adm/shop_admin/categorylist.php 파일을 모두 수정해둔 상태구요.
B가 수정만 했다하면
아래 화면처럼 자꾸 이미지 사이즈 0으로 바뀌고 스킨도 선택으로 바뀌어 버려서
쇼핑몰에서 상품이 안나오게 되요.ㅠ
혹시
categoryformupdate.php 파일을 수정해야 하는걸까요?
그렇다면...어디 부분을 수정 해야 할까요.
<?php
$sub_menu = '400200';
include_once('./_common.php');
if ($file = $_POST['ca_include_head']) {
$file_ext = pathinfo($file, PATHINFO_EXTENSION);
if (! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || !preg_match("/\.(php|htm[l]?)$/i", $file)) {
alert("상단 파일 경로가 php, html 파일이 아닙니다.");
}
}
if ($file = $_POST['ca_include_tail']) {
$file_ext = pathinfo($file, PATHINFO_EXTENSION);
if (! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || !preg_match("/\.(php|htm[l]?)$/i", $file)) {
alert("하단 파일 경로가 php, html 파일이 아닙니다.");
}
}
if( isset($_POST['ca_id']) ){
$ca_id = preg_replace('/[^0-9a-z]/i', '', $ca_id);
$sql = " select * from {$g5['g5_shop_category_table']} where ca_id = '$ca_id' ";
$ca = sql_fetch($sql);
if (($ca['ca_include_head'] !== $_POST['ca_include_head'] || $ca['ca_include_tail'] !== $_POST['ca_include_tail']) && function_exists('get_admin_captcha_by') && get_admin_captcha_by()){
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
if (!chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
}
}
if(!is_include_path_check($_POST['ca_include_head'], 1)) {
alert('상단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
}
if(!is_include_path_check($_POST['ca_include_tail'], 1)) {
alert('하단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
}
if ($w == "u" || $w == "d")
check_demo();
auth_check($auth[$sub_menu], "d");
check_admin_token();
/*if ($w == 'd' && $is_admin != 'super')
alert("최고관리자만 분류를 삭제할 수 있습니다.");*/
if ($w == "" || $w == "u")
{
if ($ca_mb_id)
{
$sql = " select mb_id from {$g5['member_table']} where mb_id = '$ca_mb_id' ";
$row = sql_fetch($sql);
if (!$row['mb_id'])
alert("\'$ca_mb_id\' 은(는) 존재하는 회원아이디가 아닙니다.");
}
}
if( $ca_skin && ! is_include_path_check($ca_skin) ){
alert('오류 : 데이터폴더가 포함된 path 를 포함할수 없습니다.');
}
$sql_common = " ca_explain = '$ca_explain',
ca_main = '$ca_main',
ca_order = '$ca_order',
ca_skin_dir = '$ca_skin_dir',
ca_mobile_skin_dir = '$ca_mobile_skin_dir',
ca_skin = '$ca_skin',
ca_mobile_skin = '$ca_mobile_skin',
ca_img_width = '$ca_img_width',
ca_img_height = '$ca_img_height',
ca_list_mod = '$ca_list_mod',
ca_list_row = '$ca_list_row',
ca_mobile_img_width = '$ca_mobile_img_width',
ca_mobile_img_height = '$ca_mobile_img_height',
ca_mobile_list_mod = '$ca_mobile_list_mod',
ca_mobile_list_row = '$ca_mobile_list_row',
ca_sell_email = '$ca_sell_email',
ca_use = '$ca_use',
ca_stock_qty = '$ca_stock_qty',
ca_explan_html = '$ca_explan_html',
ca_head_html = '$ca_head_html',
ca_tail_html = '$ca_tail_html',
ca_mobile_head_html = '$ca_mobile_head_html',
ca_mobile_tail_html = '$ca_mobile_tail_html',
ca_include_head = '$ca_include_head',
ca_include_tail = '$ca_include_tail',
ca_mb_id = '$ca_mb_id',
ca_cert_use = '$ca_cert_use',
ca_adult_use = '$ca_adult_use',
ca_nocoupon = '$ca_nocoupon',
ca_1_subj = '$ca_1_subj',
ca_2_subj = '$ca_2_subj',
ca_3_subj = '$ca_3_subj',
ca_4_subj = '$ca_4_subj',
ca_5_subj = '$ca_5_subj',
ca_6_subj = '$ca_6_subj',
ca_7_subj = '$ca_7_subj',
ca_8_subj = '$ca_8_subj',
ca_9_subj = '$ca_9_subj',
ca_10_subj = '$ca_10_subj',
ca_1 = '$ca_1',
ca_2 = '$ca_2',
ca_3 = '$ca_3',
ca_4 = '$ca_4',
ca_5 = '$ca_5',
ca_6 = '$ca_6',
ca_7 = '$ca_7',
ca_8 = '$ca_8',
ca_9 = '$ca_9',
ca_10 = '$ca_10' ";
if ($w == "")
{
if (!trim($ca_id))
alert("분류 코드가 없으므로 분류를 추가하실 수 없습니다.");
// 소문자로 변환
$ca_id = strtolower($ca_id);
$sql = " insert {$g5['g5_shop_category_table']}
set ca_id = '$ca_id',
ca_name = '$ca_name',
$sql_common ";
sql_query($sql);
}
else if ($w == "u")
{
$sql = " update {$g5['g5_shop_category_table']}
set ca_name = '$ca_name',
$sql_common
where ca_id = '$ca_id' ";
sql_query($sql);
// 하위분류를 똑같은 설정으로 반영
if ($sub_category) {
$len = strlen($ca_id);
$sql = " update {$g5['g5_shop_category_table']}
set $sql_common
where SUBSTRING(ca_id,1,$len) = '$ca_id' ";
if ($is_admin != 'super')
$sql .= " and ca_mb_id = '{$member['mb_id']}' ";
sql_query($sql);
}
}
else if ($w == "d")
{
// 분류의 길이
$len = strlen($ca_id);
$sql = " select COUNT(*) as cnt from {$g5['g5_shop_category_table']}
where SUBSTRING(ca_id,1,$len) = '$ca_id'
and ca_id <> '$ca_id' ";
$row = sql_fetch($sql);
if ($row['cnt'] > 0)
alert("이 분류에 속한 하위 분류가 있으므로 삭제 할 수 없습니다.\\n\\n하위분류를 우선 삭제하여 주십시오.");
$str = $comma = "";
$sql = " select it_id from {$g5['g5_shop_item_table']} where ca_id = '$ca_id' ";
$result = sql_query($sql);
$i=0;
while ($row = sql_fetch_array($result))
{
$i++;
if ($i % 10 == 0) $str .= "\\n";
$str .= "$comma{$row['it_id']}";
$comma = " , ";
}
if ($str)
alert("이 분류와 관련된 상품이 총 {$i} 건 존재하므로 상품을 삭제한 후 분류를 삭제하여 주십시오.\\n\\n$str");
// 분류 삭제
$sql = " delete from {$g5['g5_shop_category_table']} where ca_id = '$ca_id' ";
sql_query($sql);
}
if($w == 'd'){
@unlink(G5_DATA_PATH . "/category/{$ca_id}");
} else{
if($ca_img_delete || is_uploaded_file($_FILES['ca_img']['tmp_name']) == true){
@unlink(G5_DATA_PATH . "/category/{$ca_id}");
}
if(is_uploaded_file($_FILES['ca_img']['tmp_name']) == true){
@move_uploaded_file($_FILES['ca_img']['tmp_name'], G5_DATA_PATH . "/category/{$ca_id}");
@chmod(G5_DATA_PATH . "/category/{$ca_id}", G5_FILE_PERMISSION);
}
}
if(function_exists('get_admin_captcha_by'))
get_admin_captcha_by('remove');
if ($w == "" || $w == "u")
{
goto_url("./categoryform.php?w=u&ca_id=$ca_id&$qstr");
} else {
goto_url("./categorylist.php?$qstr");
}
?>
답변 1
헷갈리지 않게 하는 방법은... categoryformupdate.php 를 복사해서 하나 더 만들고
최고관리자가 아닐 경우 이 파일로 연결해서 update 처리하는 방법이 있습니다.
그리고 이 파일에서는 B가 수정할 수 있는 항목 외에는 update 쿼리에서 다 빼버리면 됩니다.