2026, 새로운 도약을 시작합니다.

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

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개

좋은글 감사합니다.

댓글 작성

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

로그인하기

영카트5 팁자료실

번호 제목 글쓴이 날짜 조회
441 3주 전 조회 255
440 1개월 전 조회 201
439 1개월 전 조회 304
438 1개월 전 조회 475
437 2개월 전 조회 668
436 2개월 전 조회 278
435 3개월 전 조회 393
434 3개월 전 조회 551
433 3개월 전 조회 379
432 3개월 전 조회 347
431 3개월 전 조회 453
430 3개월 전 조회 414
429 3개월 전 조회 364
428 3개월 전 조회 376
427 4개월 전 조회 518
426 4개월 전 조회 544
425 4개월 전 조회 360
424 4개월 전 조회 637
423 4개월 전 조회 606
422 4개월 전 조회 527
421 5개월 전 조회 575
420 5개월 전 조회 496
419 5개월 전 조회 579
418 5개월 전 조회 522
417 5개월 전 조회 630
416 6개월 전 조회 437
415 6개월 전 조회 570
414 6개월 전 조회 572
413 6개월 전 조회 668
412 7개월 전 조회 560
🐛 버그신고