비회원 조회조건 변경 질문이요..

비회원 조회조건 변경 질문이요..

QA

비회원 조회조건 변경 질문이요..

본문

비회원 주문조회를 
주문번호와 비밀번호를
주문자 이름과 전화번호로 변경할려 합니다. 
수정한 파일 login.skin.php 내용중 전송을 od_id 에서 od_name, od_pwd에서 od_tel 로 변경하고 
orderinquiry.php 에서 get과 sql 변경하는데 잘 안되네요...

sql 수정 부탁드립니다. 

안전과 상관없이 즉석에서 상품선택 주문후 이름으로 조회를 구현할려고 하는겁니다. 
실제로 웹쇼핑 하는거 아닙니다. 

 

제이앤님의 답변으로 
orderinquiry.php

$od_name = isset($_GET['od_name']) ? trim($_GET['od_name']) : '';
$od_tel = isset($_GET['od_tel']) ? trim($_GET['od_tel']) : '';
 // SQL - 전화번호는 하이픈 제거하여 비교
$od_tel_clean = preg_replace('/[^0-9]/', '', $od_tel);

$sql = "SELECT * FROM {$g5['g5_shop_order_table']} 
        WHERE od_name = '$od_name' 
        AND REPLACE(REPLACE(REPLACE(od_tel, '-', ''), ' ', ''), '.', '') = '$od_tel_clean'
        AND od_id LIKE '{$g5['time_ymd']}%'
        ORDER BY od_time DESC 
       LIMIT 1";

login.skin.php
<input type="text" name="od_name" placeholder="주문자명" required>
<input type="text" name="od_tel" placeholder="전화번호 (*** 개인정보보호를 위한 휴대폰번호 노출방지 ***)" required>

 

나름 수정했는데도 조회가 안되네요...
orderinquiryview.php 수정해야 되는건지요? 

 

감사합니다. 
 

이 질문에 댓글 쓰기 :

답변 1


$od_name = isset($_POST['od_name']) ? trim($_POST['od_name']) : '';
$od_tel  = isset($_POST['od_tel'])  ? trim($_POST['od_tel'])  : '';
//이것을 윗 부분에 추가 합니다.// 회원인 경우
if ($is_member)
{
    $sql_common = " from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' ";
}
else if ($od_name && $od_tel) // 비회원인 경우 이름과 핸드폰번호가 넘어왔다면
{
        $check_order = sql_fetch(" from {$g5['g5_shop_order_table']} where od_name = '$od_name' AND (od_hp = '$od_tel' OR od_tel = '$od_tel') ");
        if($check_order['od_id']) { // 주문 내용이 있으면
            $sql_common = " from {$g5['g5_shop_order_table']} where od_id = '".$check_order['od_id']."' ";
        } else { // 업으면 경고창 띄움
            alert('주문이 존재하지 않습니다.');
            exit;
        }
    }
}
else if ($od_id && $od_pwd) // 비회원인 경우 주문서번호와 비밀번호가 넘어왔다면
{ /// 기존의 내용 유지
    
}

/shop/orderinquiry.php

여기 파일의  // 회원인 경우 부분을 찾아서 
위의 내용을 추가 하시면 작동 할 것입니다.
 

디비 비교는 전번과 핸드폰에서 하게 되어 있습니다.

수정을 아래와 같이 했는데도 조회가 이뤄지지가 않아요..
post로 전달은 받아옵니다. 계속하여 존재하지 않는걸로 경고창이 뜨네요..


$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') : '';
$od_name = isset($_POST['od_name']) ? trim($_POST['od_name']) : '';
$od_tel  = isset($_POST['od_tel'])  ? trim($_POST['od_tel'])  : '';
echo $od_name;
echo $od_tel;
// 회원인 경우
if ($is_member)
{
    $sql_common = " from {$g5['g5_shop_order_table']} where mb_id = '{$member['mb_id']}' ";
}
else if ($od_name && $od_tel) // 비회원인 경우 이름과 핸드폰번호가 넘어왔다면
{
        $check_order = sql_fetch(" from {$g5['g5_shop_order_table']} where od_name = '$od_name' AND (od_hp = '$od_tel' OR od_tel = '$od_tel') ");
        if($check_order['od_id']) { // 주문 내용이 있으면
            $sql_common = " from {$g5['g5_shop_order_table']} where od_id = '".$check_order['od_id']."' ";
        } else { // 업으면 경고창 띄움
            alert('a주문이 존재하지 않습니다.');
            exit;
        }
    }
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'));
}

우선 감사드립니다.
아래 od_id 추가로 조회는 됩니다만 죄회된 내역에
입력한 이름과 전화번호 일치한 내용 뿐 아니라 다른 내역도 함께 리스트에 나옵니다.

예로 a,b두개의 주문 내역이 있고 서로 다른 이름과 전화번로로 주문, 순서로 b 먼저 주문하고 a 주문,

a 주문 일치한 정보로 조회시  a과b 내역이 함께 조회가 되고
a 링크가 제대로 열림.

첫번째 주문한  b정보로 조회시 역시 a과b 내역 함께  조회되고
조회된 리스트에서 b내역은 경고, a 내역은 또 열리네요...

오더쿼리뷰 파일 보니 토큰비교가 있네요...
점점 복잡해지는 이 기분..아...

이름과 전번이 같은 것이 있으면 당연히 여러개가 나오는 구조 입니다.
만약 가장 최근의 하나만 가져오고 싶다면 아래와 같이 변경 하세요


$check_order = sql_fetch("select od_id from {$g5['g5_shop_order_table']} where od_name = '$od_name' AND (od_hp = '$od_tel' OR od_tel = '$od_tel') order by od_id desc limit 1");

이름과 전번이 같은것이 여러개가 나오는것이 아니구요..

이름과 전번이 다 다른데 리스트에 나옵니다.

사이트 쪽지로 드리겠습니다. 직접 보시면 바로 이해가 되실거에요..

답변을 작성하시기 전에 로그인 해주세요.
전체 129,672 | RSS
QA 내용 검색

회원로그인

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