영카트 상품후기 비회원 가능하게 정보
영카트 상품후기 비회원 가능하게본문
QA 답변용으로 작성했는데 다시보니 비회원이 아니라 비구매 회원에 대한 질문이어서 -_- 그냥 내용을 버리기 아까워서 올려봅니다.
데스크탑 버전만 설명했습니다.
모바일버전은 mobile 폴더내의 각 파일에 적용하면 되지 않을까 싶습니다.
기준은 영카트5.2.1 입니다.
쇼핑몰환경설정중 사용후기 설정이 "주문상태와 무관하게 작성가능"로 되어있어야 합니다.
skin/shop/basic/itemuseform.skin.php 제목입력항목 위에 추가
shop/itemuseform.php 과 itemuseformupdate.php 상단쪽의 코드 삭제
shop/itemuseformupdate.php 수정
이것을 아래로 수정
중간쯤에
이것을 아래로 수정
이렇게만 해두면 "주문상태가 완료인 경우에만 작성가능" 설정일 때에는 다른 비회원이 구매완료한 경우가 있으면 작성가능한 버그가 있습니다.
좀 더 엄격하게 한다면 주문완료일 때만 작성가능 설정에서는 비회원은 작성 못하게 하는게 맞겠죠.
lib/shop.lib.php 에서 check_itemuse_write 함수를 찾아서 global 다음에 추가
버그와 문제점은 고수님들의 손길로...
데스크탑 버전만 설명했습니다.
모바일버전은 mobile 폴더내의 각 파일에 적용하면 되지 않을까 싶습니다.
기준은 영카트5.2.1 입니다.
쇼핑몰환경설정중 사용후기 설정이 "주문상태와 무관하게 작성가능"로 되어있어야 합니다.
skin/shop/basic/itemuseform.skin.php 제목입력항목 위에 추가
<?php if(!$is_member) { ?>
<tr>
<th scope="row"><label for="is_name">이름<strong class="sound_only"> 필수</strong></label></th>
<td><input type="text" name="is_name" value="<?php echo get_text($use['is_name']?$use['is_name']:$member['mb_name']); ?>" id="is_name" required class="required frm_input" minlength="2" maxlength="30"></td>
</tr>
<tr>
<th scope="row"><label for="is_password">비밀번호<strong class="sound_only"> 필수</strong></label></th>
<td><input type="password" name="is_password" value="" id="is_password" required class="required frm_input" minlength="4" maxlength="50"></td>
</tr>
<?php } ?>
shop/itemuseform.php 과 itemuseformupdate.php 상단쪽의 코드 삭제
if (!$is_member) {
alert_close("사용후기는 회원만 작성 가능합니다.");
}
shop/itemuseformupdate.php 수정
$is_name = addslashes($member['mb_name']);
$is_password = $member['mb_password'];
이것을 아래로 수정
if ($is_member) {
$is_name = addslashes($member['mb_name']);
$is_password = $member['mb_password'];
} else {
$is_name = clean_xss_tags(trim($_POST['is_name']));
$is_password = $_POST['is_password'];
if(!strlen($is_name)) alert('이름을 입력하여 주십시오.');
if(!strlen(trim($is_password))) alert('비밀번호를 입력하여 주십시오.');
$is_name = addslashes($is_name);
if($w=='') $is_password = get_encrypt_string($is_password);
}
중간쯤에
if ($row['is_password'] != $is_password)
alert("비밀번호가 틀리므로 수정하실 수 없습니다.");
이것을 아래로 수정
if(!$is_admin) { // 관리자는 비번체크 패스
if($member['mb_id'] || $row['mb_id']) {
if($member['mb_id']!==$row['mb_id']) alert('자신의 사용후기만 수정하실 수 있습니다.');
} elseif(!check_password($is_password, $row['is_password']))
alert('비밀번호가 틀리므로 수정하실 수 없습니다.');
}
이렇게만 해두면 "주문상태가 완료인 경우에만 작성가능" 설정일 때에는 다른 비회원이 구매완료한 경우가 있으면 작성가능한 버그가 있습니다.
좀 더 엄격하게 한다면 주문완료일 때만 작성가능 설정에서는 비회원은 작성 못하게 하는게 맞겠죠.
lib/shop.lib.php 에서 check_itemuse_write 함수를 찾아서 global 다음에 추가
// 주문완료일 때만 작성가능한 설정이면 비회원은 작성불가
if($default['de_item_use_write'] && $mb_id=='') {
$msg = '\"주문상태가 완료인 경우에만 작성가능\"으로 설정된 경우, \n비회원은 후기를 작성할 수 없습니다.';
if($close)
alert_close($msg);
else
alert($msg);
}
버그와 문제점은 고수님들의 손길로...
추천
2
2
댓글 1개
좋은글 감사합니다.