본문으로 건너뛰기

구매 리뷰 보안 강화

PHP 8 · GODO25
변경 파일 수: 1개
변경 파일 목록
1
변경 파일 코드
추가삭제
Component/Board/BoardFront.php+34-1
변경 전BoardFront.php
if(empty($goodsNo) && $orderGoodsNo) {
$order = new Order();
$orderGoodsData = $order->getOrderGoods(null, $orderGoodsNo)[0];
 
 
 
$goodsNo = $orderGoodsData['goodsNo'];
}
 
if ($orderGoodsNo) {
$order = new Order();
$orderGoodsData = $order->getOrderGoods(null, $orderGoodsNo)[0];
if (empty($orderGoodsData)) {
return ['possible' => false, 'errorMsg' => __('해당 상품의 주문내역이 없습니다.')];
}
if ($this->isExceptReviewGoods($orderGoodsData['goodsNo']) === true || $orderGoodsData['goodsType'] == 'addGoods') {
}
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**
* 상품후기 작성 시 주문조건관련 애러메시지 가져오는 함수. false 이면 애러없음.
*
 
변경 후BoardFront.php
if(empty($goodsNo) && $orderGoodsNo) {
$order = new Order();
$orderGoodsData = $order->getOrderGoods(null, $orderGoodsNo)[0];
if ($this->isOwnedOrderGoods($orderGoodsNo, $isGuest) === false) {
return ['possible' => false, 'errorMsg' => __('해당 상품의 주문내역이 없습니다.')];
}
$goodsNo = $orderGoodsData['goodsNo'];
}
 
if ($orderGoodsNo) {
$order = new Order();
$orderGoodsData = $order->getOrderGoods(null, $orderGoodsNo)[0];
if (empty($orderGoodsData) || $this->isOwnedOrderGoods($orderGoodsNo, $isGuest) === false) {
return ['possible' => false, 'errorMsg' => __('해당 상품의 주문내역이 없습니다.')];
}
if ($this->isExceptReviewGoods($orderGoodsData['goodsNo']) === true || $orderGoodsData['goodsType'] == 'addGoods') {
}
}
 
/**
* 주문 상품(orderGoodsNo)이 현재 요청자 소유인지 검증
*
* 회원 : $this->member['memNo']
* 게스트 : 세션(guest.orderNo)
* 비로그인: $this->member['memNo'] == null
*
* @param int $orderGoodsNo 주문상품번호
* @param bool $isGuest 비회원 주문조회 로그인 여부
* @return bool 본인 주문상품이면 true
*/
protected function isOwnedOrderGoods($orderGoodsNo, $isGuest)
{
$arrBind = [];
$query = "SELECT count(*) as cnt FROM " . DB_ORDER_GOODS . " as og INNER JOIN " . DB_ORDER . " as o ON og.orderNo = o.orderNo WHERE og.sno = ? AND ";
$this->db->bind_param_push($arrBind, 'i', $orderGoodsNo);
if ($isGuest) {
$query .= "og.orderNo = ? AND o.memNo = 0 ";
$this->db->bind_param_push($arrBind, 's', \Session::get('guest.orderNo'));
} else {
// 비로그인 시 $this->member 미설정 → memNo null (PHP8 array-offset-on-null 경고 방지) → 매칭 0건
$memNo = is_array($this->member) ? ($this->member['memNo'] ?? null) : null;
$query .= "o.memNo = ? ";
$this->db->bind_param_push($arrBind, 'i', $memNo);
}
$result = $this->db->query_fetch($query, $arrBind, false);
 
return ($result['cnt'] > 0);
}
 
/**
* 상품후기 작성 시 주문조건관련 애러메시지 가져오는 함수. false 이면 애러없음.
*