영카트 비회원 주문 조회 시 비밀번호 없이 주문번호로만 조회 할 수 있을까요? 채택완료

1년 전 조회 4,259

질문은 아래 있습니다.

 

orderinquiry.php 입니다

Copy
<?php
include_once('./_common.php');

if (G5_IS_MOBILE) {
    include_once(G5_MSHOP_PATH.'/orderinquiry.php');
    return;
}

define("_ORDERINQUIRY_", true);

$order_info = array();
$request_pwd = isset($_POST['od_pwd']) ? $_POST['od_pwd'] : '';
$od_pwd = get_encrypt_string($request_pwd);
$od_id = isset($_POST['od_id']) ? safe_replace_regex($_POST['od_id'], 'od_id') : '';

// 회원인 경우
if ($is_member)
{
    $sql_common = " from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' ";
}
else if ($od_id && $od_pwd) // 비회원인 경우 주문서번호와 비밀번호가 넘어왔다면
{
    if( defined('G5_MYSQL_PASSWORD_LENGTH') && strlen($od_pwd) === G5_MYSQL_PASSWORD_LENGTH ) {
        $sql_common = " from {$g5['g5_shop_order_table']} where od_id = '$od_id' and od_pwd = '$od_pwd' ";
    } else {
        $sql_common = " from {$g5['g5_shop_order_table']} where od_id = '$od_id' ";

        $order_info = get_shop_order_data($od_id);
        if (!check_password($request_pwd, $order_info['od_pwd'])) {
            run_event('password_is_wrong', 'shop', $order_info);
            alert('주문이 존재하지 않습니다.');
            exit;
        }

    }
}
else // 그렇지 않다면 로그인으로 가기
{
    goto_url(G5_BBS_URL.'/login.php?url='.urlencode(G5_SHOP_URL.'/orderinquiry.php'));
}

// 테이블의 전체 레코드수만 얻음
$sql = " select count(*) as cnt " . $sql_common;
$row = sql_fetch($sql);
$total_count = $row['cnt'];

// 비회원 주문확인시 비회원의 모든 주문이 다 출력되는 오류 수정
// 조건에 맞는 주문서가 없다면
if ($total_count == 0)
{
    if ($is_member) // 회원일 경우는 메인으로 이동
        alert('주문이 존재하지 않습니다.', G5_SHOP_URL);
    else // 비회원일 경우는 이전 페이지로 이동
        alert('주문이 존재하지 않습니다.');
}

$rows = $config['cf_page_rows'];
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함


// 비회원 주문확인의 경우 바로 주문서 상세조회로 이동
if (!$is_member)
{
    if( defined('G5_MYSQL_PASSWORD_LENGTH') && strlen($od_pwd) === G5_MYSQL_PASSWORD_LENGTH ) {
        $sql = " select od_id, od_time, od_ip from {$g5['g5_shop_order_table']} where od_id = '$od_id' and od_pwd = '$od_pwd' ";
        $row = sql_fetch($sql);
    } else if( $order_info ){
        if (check_password($request_pwd, $order_info['od_pwd'])) {
            $row = $order_info;
        }
    }

    if ($row['od_id']) {
        $uid = md5($row['od_id'].$row['od_time'].$row['od_ip']);
        set_session('ss_orderview_uid', $uid);
        goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$row['od_id'].'&amp;uid='.$uid);
    }
}

$g5['title'] = '주문내역조회';
include_once('./_head.php');
?>

<!-- 주문 내역 시작 { -->
<div id="sod_v">
    <?php
    $limit = " limit $from_record, $rows ";
    include "./orderinquiry.sub.php";
    ?>

    <?php echo get_paging($config['cf_write_pages'], $page, $total_page, "{$_SERVER['SCRIPT_NAME']}?$qstr&amp;page="); ?>
</div>
<!-- } 주문 내역 끝 -->

<?php
include_once('./_tail.php');

 

1. 영카트 비회원 주문 조회 시 비밀번호 없이 주문번호로만 조회 할 수 있을까요?

 

만약 수정을 한다면 어떻게 하면 좋을지 알려주시면 정말 감사하겠습니다 선배님들

또한 다른 간단한 방법이 있으면 알려주시면 감사하겠습니다.

 

글 봐주셔서 정말 감사합니다. 

답변 1개

채택된 답변
+20 포인트

보안성때문에 잘못하다가 털릴수도 있는데 그래도 괜찮을까요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

주문한사람만 주문번호를 알수 있는데 그래도 위험할까요..?

그렇다면 주문 할때 핸드폰 번호를 받는데 핸드폰 번호를 입력하게하면 될까요?
비회원으로 가정하에 설명 드릴게요
예를들어서 a111222 라고 주문번호가 있어요 그럼 누군가 악의적으로 그대로 다 하나씩 매칭해서 주문번호를 통해 접속했어요 아님 우연히 접속을 하던지.. 그러면 딱 접속은 됐는데 아직 주문하기전단계라서 뭐 갯수를 변경하던지 일부 카드내역을 보려고 꼼수를 부리던지 이러한 상황이 여러 상황이 생길 수 있어서 왠만하면 그대로 사용하면 좋구요
근데 좀 방식을 단순하게 하고 싶으시면 주문번호, 성명, 이메일, 휴대폰번호를 통해서 확인할수있게 하는게 좋구요 비회원이라 해도 휴대폰번호인증후에 주문서를 확인할수있거나 아니면 이메일을 통해서 확인 할 수 있게 한게 나을것 같아요

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

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고