shop/orderformupdate.php 내용에서 변수 관련 질문입니다.
본문
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
if(($od_settle_case != '무통장' && $od_settle_case != 'KAKAOPAY') && $default['de_pg_service'] == 'lg' && !$_POST['LGD_PAYKEY'])
alert('결제등록 요청 후 주문해 주십시오.');
// 장바구니가 비어있는가?
if (get_session("ss_direct"))
$tmp_cart_id = get_session('ss_cart_direct');
else
$tmp_cart_id = get_session('ss_cart_id');
if (get_cart_count($tmp_cart_id) == 0)// 장바구니에 담기
alert('장바구니가 비어 있습니다.\\n\\n이미 주문하셨거나 장바구니에 담긴 상품이 없는 경우입니다.', G5_SHOP_URL.'/cart.php');
$error = "";
// 장바구니 상품 재고 검사
$sql = " select it_id,
ct_qty,
it_name,
io_id,
io_type,
ct_option
from {$g5['g5_shop_cart_table']}
where od_id = '$tmp_cart_id'
and ct_select = '1' ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// 상품에 대한 현재고수량
if($row['io_id']) {
$it_stock_qty = (int)get_option_stock_qty($row['it_id'], $row['io_id'], $row['io_type']);
} else {
$it_stock_qty = (int)get_it_stock_qty($row['it_id']);
}
// 장바구니 수량이 재고수량보다 많다면 오류
if ($row['ct_qty'] > $it_stock_qty)
$error .= "{$row['ct_option']} 의 재고수량이 부족합니다. 현재고수량 : $it_stock_qty 개\\n\\n";
}
if($i == 0)
alert('장바구니가 비어 있습니다.\\n\\n이미 주문하셨거나 장바구니에 담긴 상품이 없는 경우입니다.', G5_SHOP_URL.'/cart.php');
if ($error != "")
{
$error .= "다른 고객님께서 {$od_name}님 보다 먼저 주문하신 경우입니다. 불편을 끼쳐 죄송합니다.";
alert($error);
}
$i_price = (int)$_POST['od_price'];
$i_send_cost = (int)$_POST['od_send_cost'];
$i_send_cost2 = (int)$_POST['od_send_cost2'];
$i_send_coupon = (int)$_POST['od_send_coupon'];
$i_temp_point = (int)$_POST['od_temp_point'];
안녕하세요. 저의 지식 수준으로는 이해가 안되는 부분이 있어 질문드립니다!
우선 shop/orderformupdate.php파일에서
처음부터 49번 줄까지의 내용을 발췌하였습니다.
제가 궁금한것은
가장 마지막 부분에
$error .= "다른 고객님께서 {$od_name}님 보다 먼저 주문하신 경우입니다. 불편을 끼쳐 죄송합니다.";
이부분에서 바로 {$od_name} <-- 이부분인데요
orderformupdate.php 파일은 orderform.php 에서 폼을 입력 받고 포스트로 값을 넘겨서
그 값들로 최종 적으로 order 데이터베이스에 넣는 역할로 알고 있습니다.
그런데
제가 궁금해 사는 47줄 부분의 변수는
바로 밑줄인 51번대 줄의 변수 와 달리
포스트로 넘겨 받은 값도 없이 그냥 바로 변수가 사용되네요.
그러니까...제가 궁금한 것을 간단하게 요약하자면
현재 orderformupdate.php 에서 처음으로 $od_name 이 사용 되는 부분 이전에
$od_name 의 값을 할당해주는 부분이 없으나
$od_name 을 사용되고 있고, 실제로 이는 정상적으로 표기가 되고 있습니다.
그래서 저는 저것이 궁금한 것이 포스트로 넘겨 받아서(자동으로?) 값을 표기하는 것인지
아니면 숨겨진 곳에서 $od_name에 값을 할당해서 해당 php파일에는 보이지 않는 것인지 궁금합니다.
479번대 줄만 봐도
$od_email = get_email_address($od_email);
$od_name = clean_xss_tags($od_name);
$od_tel = clean_xss_tags($od_tel);
$od_hp = clean_xss_tags($od_hp);
단순히 이렇게 변수 할당이 되어있는데요
그 윗줄들에서 $od_email 이나 od_name 등등 전혀 변수에 값을 할당하는 구문들이 없습니다.
어디서 값이 할당되고 있는 것인가요? 너무 궁금합니다.
(혹은 $_POST['od_name']; 이렇게 쓰지 않고 그냥 $od_name 이렇게만 써도 자동으로 값을 받는 건가요?, 만약 그렇다면 어떤 곳은 POST를 사용하고 어떤 곳은 그냥 사용하는데 이유도 궁금하네요..)
!-->!-->
답변 1
네 아마 말씀대로 $od_name 를 바로 받아서 사용하여서 그런 경우일거 같습니다.
영카트를 보셔서 아시겠지만 영카트 에서 form 값을 받을떄 post를 사용안하고 그냥 변수값을 받아서
처리하는것이 상당수 많습니다.
common.php를 보시면요
// PHP 4.1.0 부터 지원됨
// php.ini 의 register_globals=off 일 경우
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
이렇게 되어있는데요..
구지 앞에 post란값을 안써도 post로 받아서 처리 됩니다.
도움이 되셨는지요 ^^
!-->