주문완료페이지 url직접입력(od_id, uid 포함)으로 접속할 때 접근 막기 채택완료
coDribble
6년 전
조회 4,343
주문완료시 orderformupdate.php 에서 orderinquiryview.php?od_id=주문번호&uid=세션값 페이지로 이동 시켜주는 경로를 수정해주고
</p>
<p>// 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);</p>
<p>
주문 완료되면 상세내역으로 바로 넘어가는게 아니라 ordercomplete 로 넘어가게 만들었습니다...
그런데 직접 url에 주문번호, 세션값 넣고 이동시 접속이 되는데 이걸 막기 위해서는 어떻게 처리를 해야할까요...??ㅠㅠㅠㅠㅠ
orderinquiryview 페이지에 있는 걸 일단 가져와보긴 했는데...
</p>
<p>include_once('./_common.php');</p>
<p> </p>
<p>// 불법접속을 할 수 없도록 세션에 아무값이나 저장하여 hidden 으로 넘겨서 다음 페이지에서 비교함
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);</p>
<p> </p>
<p>if (!$is_member) {
if (get_session('ss_orderview_uid') != $_GET['uid'])
alert("직접 링크로는 접속이 불가합니다.", G5_SHOP_URL);
}</p>
<p> </p>
<p>$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);
}</p>
<p> </p>
<p>$g5['title'] = '주문완료';</p>
<p>
이런식으로 가져왔는데... 제가 구현하고싶은건
무조건 주문서작성에서 넘어와야지만 페이지접속이 접속이 가능하고
직접 url에 주문번호랑 uid 값을 넣어도 접속이 불가능하게... 하고싶습니다..ㅠㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
6년 전
token 자체가 구분자인데
또다른 구분자를 두고 싶으신경우
주문서 페이지에서 order id 와 연결 토큰값(임의의 값)을 생성해서
넘기는 시점에 DB에 저장을 하시고 (이때 db는 임의의 테이블을 새로 생성해야할겁니다.)
페이지에서는 그 저장된 정보를 order_id기준으로 불러서 토큰(저장된 임의의값)이 일치할때만
진행되고 아니면 이전페이지나 초기페이지로 넘겨버리면 될겁니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
c
coDribble
6년 전
c
coDribble
6년 전
해결했습니다...;;;
불필요한거 같아서 $token, set_session 부분은 지우고
[code]
// if (!$is_member) {
if (get_session('ss_orderview_uid') != $_GET['uid'])
alert("직접 링크로는 접속하실 수 없습니다.", G5_SHOP_URL);
// }
[/code]
회원이 아닌경우에만 직접입력 접속을 막고있던 부분인 것 같아서...
회원 비회원 상관없이 무조건 막아야하는게 목적이라
!$is_member 부분을 지워본거였는데 됩니다!!
테스트로 주문도 해봤는데 주문서작성 후 페이지 이동은 되고 직접 링크 접속은 막히고
원하던 대로 된 것 같습니다!!
덕분에 어떻게 해야할지 방향을 잡을 수 있었던거 같아요;;
감사드립니다!!
불필요한거 같아서 $token, set_session 부분은 지우고
[code]
// if (!$is_member) {
if (get_session('ss_orderview_uid') != $_GET['uid'])
alert("직접 링크로는 접속하실 수 없습니다.", G5_SHOP_URL);
// }
[/code]
회원이 아닌경우에만 직접입력 접속을 막고있던 부분인 것 같아서...
회원 비회원 상관없이 무조건 막아야하는게 목적이라
!$is_member 부분을 지워본거였는데 됩니다!!
테스트로 주문도 해봤는데 주문서작성 후 페이지 이동은 되고 직접 링크 접속은 막히고
원하던 대로 된 것 같습니다!!
덕분에 어떻게 해야할지 방향을 잡을 수 있었던거 같아요;;
감사드립니다!!
�
플래토
6년 전
@coDribble 그래도 빠르게 해결하셨다니 다행이네요
답글적고 다른일보다가 지금확인했네요
수고하세요
답글적고 다른일보다가 지금확인했네요
수고하세요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
안그래도 폼없이 data(토큰값)를 post 받을 수 있는 방법에 대해 찾아보고 있었는데...
https://stackoverflow.com/questions/3780912/sending-post-data-without-form
이 글도 보면 세션을 이용하라는데... 말씀해주신 것과 위 글을 본 것을 토대로...
유추해본거는... ordercomplete 페이지의 $token, set_session 부분을 orderformupdate 페이지 goto_url 윗부분에 옮기고
ordercomplete 에서 세션값을 가져와서 대조해보는 방법일 것 같은데...
orderformupdate 페이지에 넣어놓은 세션값을 ordercomplete 에서 어떻게 가져와야 하나요..??ㅠㅠㅠ