주문완료페이지 url직접입력(od_id, uid 포함)으로 접속할 때 접근 막기

주문완료페이지 url직접입력(od_id, uid 포함)으로 접속할 때 접근 막기

QA

주문완료페이지 url직접입력(od_id, uid 포함)으로 접속할 때 접근 막기

본문

주문완료시 orderformupdate.php 에서 orderinquiryview.php?od_id=주문번호&uid=세션값 페이지로 이동 시켜주는 경로를 수정해주고

 


// goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$od_id.'&uid='.$uid);
goto_url(G5_SHOP_URL.'/ordercomplete.php?od_id='.$od_id.'&uid='.$uid);

 

주문 완료되면 상세내역으로 바로 넘어가는게 아니라 ordercomplete 로 넘어가게 만들었습니다...

 

그런데 직접 url에 주문번호, 세션값 넣고 이동시 접속이 되는데 이걸 막기 위해서는 어떻게 처리를 해야할까요...??ㅠㅠㅠㅠㅠ

 

orderinquiryview 페이지에 있는 걸 일단 가져와보긴 했는데...


include_once('./_common.php');
 
// 불법접속을 할 수 없도록 세션에 아무값이나 저장하여 hidden 으로 넘겨서 다음 페이지에서 비교함
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);
 
if (!$is_member) {
    if (get_session('ss_orderview_uid') != $_GET['uid'])
        alert("직접 링크로는 접속이 불가합니다.", G5_SHOP_URL);
}
 
$sql = "select * from {$g5['g5_shop_order_table']} where od_id = '$od_id' ";
if($is_member && !$is_admin)
    $sql .= " and mb_id = '{$member['mb_id']}' ";
$od = sql_fetch($sql);
if (!$od['od_id'] || (!$is_member && md5($od['od_id'].$od['od_time'].$od['od_ip']) != get_session('ss_orderview_uid'))) {
    alert("조회하실 주문서가 없습니다.", G5_SHOP_URL);
}
 
$g5['title'] = '주문완료';

 

이런식으로 가져왔는데... 제가 구현하고싶은건

 

무조건 주문서작성에서 넘어와야지만 페이지접속이 접속이 가능하고

 

직접 url에 주문번호랑 uid 값을 넣어도 접속이 불가능하게... 하고싶습니다..ㅠㅠㅠ

 

이 질문에 댓글 쓰기 :

답변 1

token 자체가 구분자인데 

또다른 구분자를 두고 싶으신경우

 

주문서 페이지에서 order id 와 연결 토큰값(임의의 값)을 생성해서 

넘기는 시점에 DB에 저장을 하시고  (이때 db는 임의의 테이블을 새로 생성해야할겁니다.)

 

페이지에서는 그 저장된 정보를 order_id기준으로 불러서 토큰(저장된 임의의값)이 일치할때만

진행되고 아니면 이전페이지나 초기페이지로 넘겨버리면 될겁니다.

앗... 빠르시네요...;; ㅎㅎ 답변감사드립니다!!

안그래도 폼없이 data(토큰값)를 post 받을 수 있는 방법에 대해 찾아보고 있었는데...

https://stackoverflow.com/questions/3780912/sending-post-data-without-form

이 글도 보면 세션을 이용하라는데... 말씀해주신 것과 위 글을 본 것을 토대로...

유추해본거는... ordercomplete 페이지의 $token, set_session 부분을 orderformupdate 페이지 goto_url 윗부분에 옮기고

ordercomplete 에서 세션값을 가져와서 대조해보는 방법일 것 같은데...

orderformupdate 페이지에 넣어놓은 세션값을 ordercomplete 에서 어떻게 가져와야 하나요..??ㅠㅠㅠ

해결했습니다...;;;

불필요한거 같아서 $token, set_session 부분은 지우고


// if (!$is_member) {
    if (get_session('ss_orderview_uid') != $_GET['uid'])
        alert("직접 링크로는 접속하실 수 없습니다.", G5_SHOP_URL);
// }


회원이 아닌경우에만 직접입력 접속을 막고있던 부분인 것 같아서...

회원 비회원 상관없이 무조건 막아야하는게 목적이라

!$is_member 부분을 지워본거였는데 됩니다!!

테스트로 주문도 해봤는데 주문서작성 후 페이지 이동은 되고 직접 링크 접속은 막히고

원하던 대로 된 것 같습니다!!

덕분에 어떻게 해야할지 방향을 잡을 수 있었던거 같아요;;

감사드립니다!!

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

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