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

· 2016-08-31 (수) 12:29:00 · 7567 · 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개

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

영카트5 팁자료실

455건
+
제목 글쓴이 날짜 조회
17-04-29 조회 4,926
17-04-22 조회 5,364
17-04-10 조회 5,921
17-03-26 조회 5,634
17-03-15 조회 9,153
17-03-08 조회 4,556
17-03-02 조회 5,166
17-02-22 조회 1.3만
17-02-22 조회 4,782
17-02-19 조회 4,410
17-02-18 조회 4,622
17-02-07 조회 8,397
17-01-25 조회 5,003
17-01-14 조회 5,245
16-12-23 조회 4,692
16-12-14 조회 6,858
16-12-01 조회 4,429
16-11-17 조회 6,932
16-11-15 조회 6,018
16-11-15 조회 1만
16-11-14 조회 5,198
16-11-10 조회 4,525
16-11-09 조회 4,498
16-11-08 조회 4,867
16-10-30 조회 7,790
16-09-28 조회 7,871
16-09-22 조회 5,305
16-09-05 조회 5,928
16-08-31 조회 7,568
16-07-28 조회 5,818