영카트 상품후기 비회원 가능하게 > 영카트5 팁자료실

영카트5 팁자료실

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

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

본문

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

데스크탑 버전만 설명했습니다.
모바일버전은 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

댓글 1개

전체 392
영카트5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT