diff --git a/data/class/pages/cart/LC_Page_Cart.php b/data/class/pages/cart/LC_Page_Cart.php index 102ab107ee..ae835e4225 100644 --- a/data/class/pages/cart/LC_Page_Cart.php +++ b/data/class/pages/cart/LC_Page_Cart.php @@ -284,22 +284,32 @@ public function lfUpdateOrderTempid($pre_uniqid, $uniqid) */ public function lfGetCartPrevUrl(&$session, $referer) { - if (!preg_match('/cart/', $referer)) { - if (!empty($session['cart_referer_url'])) { - $session['cart_prev_url'] = $session['cart_referer_url']; - unset($session['cart_referer_url']); - } else { - if (preg_match('/entry/', $referer)) { - $session['cart_prev_url'] = HTTPS_URL . 'entry/kiyaku.php'; - } else { - $session['cart_prev_url'] = $referer; - } + // 妥当性チェック + if (!SC_Utils_Ex::isInternalUrl($referer)) { + return; + } + + // 除外ページの場合、何もせず終了する。 + $arrExclude = array( + ROOT_URLPATH . 'shopping/', + ROOT_URLPATH . 'cart/', + ); + + // リファラーから path を切り出す。 + $netURL = new Net_URL($referer); + $referer_path = $netURL->path; + + foreach ($arrExclude as $start) { + if (str_starts_with($referer_path, $start)) { + return; } } - // 妥当性チェック - if (!SC_Utils_Ex::sfIsInternalDomain($session['cart_prev_url'])) { - $session['cart_prev_url'] = ''; + + if (str_starts_with($referer_path, ROOT_URLPATH . 'entry/')) { + $referer = HTTPS_URL . 'entry/kiyaku.php'; } + + $session['cart_prev_url'] = $referer; } /** diff --git a/data/class/pages/products/LC_Page_Products_Detail.php b/data/class/pages/products/LC_Page_Products_Detail.php index 980cf3ed11..461203bbe1 100644 --- a/data/class/pages/products/LC_Page_Products_Detail.php +++ b/data/class/pages/products/LC_Page_Products_Detail.php @@ -242,11 +242,7 @@ public function action() case 'select': case 'select2': case 'selectItem': - /** - * モバイルの数量指定・規格選択の際に、 - * $_SESSION['cart_referer_url'] を上書きさせないために、 - * 何もせずbreakする。 - */ + // nop break; default: @@ -687,9 +683,6 @@ public function doAddFavoriteSphone(SC_Customer $objCustomer) */ public function doDefault() { - // カート「戻るボタン」用に保持 - $netURL = new Net_URL(); - $_SESSION['cart_referer_url'] = $netURL->getURL(); } /** diff --git a/data/class/pages/products/LC_Page_Products_List.php b/data/class/pages/products/LC_Page_Products_List.php index 8196299e04..455b57a780 100644 --- a/data/class/pages/products/LC_Page_Products_List.php +++ b/data/class/pages/products/LC_Page_Products_List.php @@ -578,11 +578,6 @@ public function doDefault(&$objProduct, &$objFormParam) SC_Response_Ex::actionExit(); } $js_fnOnLoad .= $this->lfSetSelectedData($this->arrProducts, $this->arrForm, $arrErr, $target_product_id); - } else { - // カート「戻るボタン」用に保持 - $netURL = new Net_URL(); - //該当メソッドが無いため、$_SESSIONに直接セット - $_SESSION['cart_referer_url'] = $netURL->getURL(); } $this->tpl_javascript .= 'function fnOnLoad() {' . $js_fnOnLoad . '}';