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

영카트 상품후기 비회원 가능하게

· 9년 전 · 6767 · 1
QA 답변용으로 작성했는데 다시보니 비회원이 아니라 비구매 회원에 대한 질문이어서 -_- 그냥 내용을 버리기 아까워서 올려봅니다.

데스크탑 버전만 설명했습니다.
모바일버전은 mobile 폴더내의 각 파일에 적용하면 되지 않을까 싶습니다.
기준은 영카트5.2.1 입니다.
쇼핑몰환경설정중 사용후기 설정이 "주문상태와 무관하게 작성가능"로 되어있어야 합니다.


skin/shop/basic/itemuseform.skin.php 제목입력항목 위에 추가
[code]
<?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 } ?>
[/code]

shop/itemuseform.php 과 itemuseformupdate.php 상단쪽의 코드 삭제
[code]
if (!$is_member) {
alert_close("사용후기는 회원만 작성 가능합니다.");
}
[/code]


shop/itemuseformupdate.php 수정

[code]
$is_name = addslashes($member['mb_name']);
$is_password = $member['mb_password'];
[/code]
이것을 아래로 수정
[code]
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);
}
[/code]

중간쯤에
[code]
if ($row['is_password'] != $is_password)
alert("비밀번호가 틀리므로 수정하실 수 없습니다.");
[/code]
이것을 아래로 수정
[code]
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('비밀번호가 틀리므로 수정하실 수 없습니다.');
}
[/code]


이렇게만 해두면 "주문상태가 완료인 경우에만 작성가능" 설정일 때에는 다른 비회원이 구매완료한 경우가 있으면 작성가능한 버그가 있습니다.
좀 더 엄격하게 한다면 주문완료일 때만 작성가능 설정에서는 비회원은 작성 못하게 하는게 맞겠죠.

lib/shop.lib.php 에서 check_itemuse_write 함수를 찾아서 global 다음에 추가
[code]
// 주문완료일 때만 작성가능한 설정이면 비회원은 작성불가
if($default['de_item_use_write'] && $mb_id=='') {
$msg = '\"주문상태가 완료인 경우에만 작성가능\"으로 설정된 경우, \n비회원은 후기를 작성할 수 없습니다.';
if($close)
alert_close($msg);
else
alert($msg);
}
[/code]


버그와 문제점은 고수님들의 손길로...

댓글 작성

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

로그인하기

댓글 1개

좋은글 감사합니다.

게시글 목록

번호 제목
670
662
660
653
652
637
623
622
620
619
618
614
599
598
593
586
583
578
575
572
570
568
566
558
552
551
545
543
531
518