item.php에서 레벨 3이상 접근
본문
카테고리 id값이 50으로 시작 되는 제품을 레벨3 이하는 접근을 못하게 할려고 하는건데..
이게 안되네요... 뭐가 잘못 되었을까요?
고수님 지도 편달 부탁 드립니다.
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/iteminfo.lib.php');
$find_ca_id = substr($ca_id, 0, 2);
if($member[mb_level] < 3 && $find_ca_id == 50){
alert("접근권한이 없습니다.");
}
$it_id = isset($_GET['it_id']) ? get_search_string(trim($_GET['it_id'])) : '';
$it_seo_title = isset($it_seo_title) ? $it_seo_title : '';
$it = get_shop_item_with_category($it_id, $it_seo_title);
$it_id = $_REQUEST['it_id'] = $it['it_id'];
if (! (isset($it['it_id']) && $it['it_id'])) {
alert('자료가 없습니다.');
}
if( isset($row['it_seo_title']) && ! $row['it_seo_title'] ){
shop_seo_title_update($row['it_id']);
}
if (!($it['ca_use'] && $it['it_use'])) {
if (!$is_admin)
alert('판매가능한 상품이 아닙니다.');
}
// 분류 테이블에서 분류 상단, 하단 코드를 얻음
$sql = " select ca_mobile_skin_dir, ca_include_head, ca_include_tail, ca_cert_use, ca_adult_use
from {$g5['g5_shop_category_table']}
where ca_id = '{$it['ca_id']}' ";
$ca = sql_fetch($sql);
// 본인인증, 성인인증체크
if(!$is_admin) {
$msg = shop_member_cert_check($it_id, 'item');
if($msg)
alert($msg, G5_SHOP_URL);
}
// 오늘 본 상품 저장 시작
// tv 는 today view 약자
$saved = false;
$tv_idx = (int)get_session("ss_tv_idx");
if ($tv_idx > 0) {
for ($i=1; $i<=$tv_idx; $i++) {
if (get_session("ss_tv[$i]") == $it_id) {
$saved = true;
break;
}
}
}
if (!$saved) {
$tv_idx++;
set_session("ss_tv_idx", $tv_idx);
set_session("ss_tv[$tv_idx]", $it_id);
}
// 오늘 본 상품 저장 끝
// 조회수 증가
if (get_cookie('ck_it_id') != $it_id) {
sql_query(" update {$g5['g5_shop_item_table']} set it_hit = it_hit + 1 where it_id = '$it_id' "); // 1증가
set_cookie("ck_it_id", $it_id, 3600); // 1시간동안 저장
}
// 이전 상품보기
$sql = " select it_id, it_name from {$g5['g5_shop_item_table']}
where it_id > '$it_id'
and SUBSTRING(ca_id,1,4) = '".substr($it['ca_id'],0,4)."'
and it_use = '1'
order by it_id asc
limit 1 ";
$row = sql_fetch($sql);
if (isset($row['it_id']) && $row['it_id']) {
$prev_title = '이전상품 <span>'.$row['it_name'].'</span>';
$prev_href = '<a href="'.shop_item_url($row['it_id']).'" id="siblings_prev">';
$prev_href2 = '</a>';
} else {
$prev_title = '';
$prev_href = '';
$prev_href2 = '';
}
// 다음 상품보기
$sql = " select it_id, it_name from {$g5['g5_shop_item_table']}
where it_id < '$it_id'
and SUBSTRING(ca_id,1,4) = '".substr($it['ca_id'],0,4)."'
and it_use = '1'
order by it_id desc
limit 1 ";
$row = sql_fetch($sql);
if (isset($row['it_id']) && $row['it_id']) {
$next_title = '다음 상품 <span>'.$row['it_name'].'</span>';
$next_href = '<a href="'.shop_item_url($row['it_id']).'" id="siblings_next">';
$next_href2 = '</a>';
} else {
$next_title = '';
$next_href = '';
$next_href2 = '';
}
// 관리자가 확인한 사용후기의 개수를 얻음
$sql = " select count(*) as cnt from `{$g5['g5_shop_item_use_table']}` where it_id = '{$it_id}' and is_confirm = '1' ";
$row = sql_fetch($sql);
$item_use_count = $row['cnt'];
// 상품문의의 개수를 얻음
$sql = " select count(*) as cnt from `{$g5['g5_shop_item_qa_table']}` where it_id = '{$it_id}' ";
$row = sql_fetch($sql);
$item_qa_count = $row['cnt'];
if ($default['de_mobile_rel_list_use']) {
// 관련상품의 개수를 얻음
$sql = " select count(*) as cnt
from {$g5['g5_shop_item_relation_table']} a
left join {$g5['g5_shop_item_table']} b on (a.it_id2=b.it_id)
where a.it_id = '{$it['it_id']}' and b.it_use='1' ";
$row = sql_fetch($sql);
$item_relation_count = $row['cnt'];
}
// 상품품절체크
if(G5_SOLDOUT_CHECK)
$is_soldout = is_soldout($it['it_id'], true);
// 주문가능체크
$is_orderable = true;
if(!$it['it_use'] || $it['it_tel_inq'] || $is_soldout)
$is_orderable = false;
if($is_orderable) {
if(defined('G5_THEME_USE_OPTIONS_TRTD') && G5_THEME_USE_OPTIONS_TRTD){
$option_item = get_item_options($it['it_id'], $it['it_option_subject'], '');
$supply_item = get_item_supply($it['it_id'], $it['it_supply_subject'], '');
} else {
// 선택 옵션 ( 기존의 tr td 태그로 가져오려면 'div' 를 '' 로 바꾸거나 또는 지워주세요 )
$option_item = get_item_options($it['it_id'], $it['it_option_subject'], 'div');
// 추가 옵션 ( 기존의 tr td 태그로 가져오려면 'div' 를 '' 로 바꾸거나 또는 지워주세요 )
$supply_item = get_item_supply($it['it_id'], $it['it_supply_subject'], 'div');
}
// 상품 선택옵션 수
$option_count = 0;
if($it['it_option_subject']) {
$temp = explode(',', $it['it_option_subject']);
$option_count = count($temp);
}
// 상품 추가옵션 수
$supply_count = 0;
if($it['it_supply_subject']) {
$temp = explode(',', $it['it_supply_subject']);
$supply_count = count($temp);
}
}
// 스킨경로
$skin_dir = G5_MSHOP_SKIN_PATH;
$ca_dir_check = true;
if($it['it_mobile_skin']) {
if(preg_match('#^theme/(.+)$#', $it['it_mobile_skin'], $match))
$skin_dir = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/shop/'.$match[1];
else
$skin_dir = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/shop/'.$it['it_mobile_skin'];
if(is_dir($skin_dir)) {
$form_skin_file = $skin_dir.'/item.form.skin.php';
if(is_file($form_skin_file))
$ca_dir_check = false;
}
}
if($ca_dir_check) {
if($ca['ca_mobile_skin_dir']) {
if(preg_match('#^theme/(.+)$#', $ca['ca_mobile_skin_dir'], $match))
$skin_dir = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/shop/'.$match[1];
else
$skin_dir = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/shop/'.$ca['ca_mobile_skin_dir'];
if(is_dir($skin_dir)) {
$form_skin_file = $skin_dir.'/item.form.skin.php';
if(!is_file($form_skin_file))
$skin_dir = G5_MSHOP_SKIN_PATH;
} else {
$skin_dir = G5_MSHOP_SKIN_PATH;
}
}
}
define('G5_SHOP_CSS_URL', str_replace(G5_PATH, G5_URL, $skin_dir));
$g5['title'] = $it['it_name'].' > '.$it['ca_name'];
$naverpay_button_js = '';
include_once(G5_MSHOP_PATH.'/_head.php');
include_once(G5_SHOP_PATH.'/settle_naverpay.inc.php');
// 상단 HTML
echo '<div id="sit_hhtml">'.conv_content($it['it_mobile_head_html'], 1).'</div>';
?>
<?php if($is_orderable) { ?>
<script src="<?php echo G5_JS_URL; ?>/shop.js"></script>
<?php } ?>
<?php
if (G5_HTTPS_DOMAIN)
$action_url = G5_HTTPS_DOMAIN.'/'.G5_SHOP_DIR.'/cartupdate.php';
else
$action_url = G5_SHOP_URL.'/cartupdate.php';
?>
<div id="sit">
<?php
// 상품 구입폼
include_once($skin_dir.'/item.form.skin.php');
?>
</div>
<?php
// 하단 HTML
echo conv_content($it['it_mobile_tail_html'], 1);
include_once(G5_MSHOP_PATH.'/_tail.php');
답변 2
item.php에서는 $ca_id 변수가 없습니다. 아래처럼 $it 변수에 상품정보배열이 담기고 처리하셔야합니다.
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/iteminfo.lib.php');
$it_id = isset($_GET['it_id']) ? get_search_string(trim($_GET['it_id'])) : '';
$it_seo_title = isset($it_seo_title) ? $it_seo_title : '';
$it = get_shop_item_with_category($it_id, $it_seo_title);
$it_id = $_REQUEST['it_id'] = $it['it_id'];
$find_ca_id = substr($it['ca_id'], 0, 2);
if($member[mb_level] < 3 && $find_ca_id == 50){ alert("접근권한이 없습니다."); }
...이하생략
<?php
if($member[mb_level] < 3 && $find_ca_id == 50){
alert("접근권한이 없습니다.");
}
//이것을
if($find_ca_id == '50') { // ca_id를 substr로 나눈경우 숫자가 아닌 문자가 됩니다. 그리고
if (!($is_member && $member['mb_level'] > 3 )){
alert("접근권한이 없습니다.");
}
}
//와 같이 순서를 분리 및 변경해서 체크해보세요
답변을 작성하시기 전에 로그인 해주세요.