バージョン選択

フォーラム

メニュー

オンライン状況

54 人のユーザが現在オンラインです。 (46 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 54
もっと...

サイト内検索

バグ報告 > フロント機能 > 会員登録せずに購入手続きができなくなりました。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mizuvan
投稿日時: 2014/11/27 16:57
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 会員登録せずに購入手続きができなくなりました。
いろいろとありがとうございます。

しっかり理解出来ていなくすいません・・

$this->arrErr ですが、action() の最後辺りというのはこのような
解釈ではなかったのでしょうか??
このようにやったところ Fatal error(E_PARSE): syntax error, unexpected EC-CUBEのエラーとなり ちょうど一番最後に追記したところのことを指示されました。

LC_Page_Shoping.php
    /**
     * Page のプロセス.
     *
     * @return void
     */
    public function action()
    {
        //決済処理中ステータスのロールバック
        $objPurchase = new SC_Helper_Purchase_Ex();
        $objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG);

        $objSiteSess = new SC_SiteSession_Ex();
        $objCartSess = new SC_CartSession_Ex();
        $objCustomer = new SC_Customer_Ex();
        $objCookie = new SC_Cookie_Ex();
        $objFormParam = new SC_FormParam_Ex();

        $nonmember_mainpage = 'shopping/nonmember_input.tpl';
        $nonmember_title = 'お客様情報入力';

        $this->tpl_uniqid = $objSiteSess->getUniqId();
        $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess);

        $this->cartKey = $objCartSess->getKey();

        // ログイン済みの場合は次画面に遷移
        if ($objCustomer->isLoginSuccess(true)) {
            SC_Response_Ex::sendRedirect(
                    $this->getNextlocation($this->cartKey, $this->tpl_uniqid,
                                           $objCustomer, $objPurchase,
                                           $objSiteSess));
            SC_Response_Ex::actionExit();
        }
        // 非会員かつ, ダウンロード商品の場合はエラー表示
        else {
            if ($this->cartKey == PRODUCT_TYPE_DOWNLOAD) {
                $msg = 'ダウンロード商品を含むお買い物は、会員登録が必要です。<br/>'
                     . 'お手数ですが、会員登録をお願いします。';
                SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, $objSiteSess, false, $msg);
                SC_Response_Ex::actionExit();
            }
        }

        switch ($this->getMode()) {
            // ログイン実行
            case 'login':
                $this->lfInitLoginFormParam($objFormParam);
                $objFormParam->setParam($_POST);
                $objFormParam->trimParam();
                $objFormParam->convParam();
                $objFormParam->toLower('login_email');
                $this->arrErr = $objFormParam->checkError();

                // ログイン判定
                if (SC_Utils_Ex::isBlank($this->arrErr)
                    && $objCustomer->doLogin($objFormParam->getValue('login_email'),
                                             $objFormParam->getValue('login_pass'))) {
                    // クッキー保存判定
                    if ($objFormParam->getValue('login_memory') == '1' && strlen($objFormParam->getValue('login_email')) >= 1) {
                        $objCookie->setCookie('login_email', $objFormParam->getValue('login_email'));
                    } else {
                        $objCookie->setCookie('login_email', '');
                    }

                    // モバイルサイトで携帯アドレスの登録が無い場合、携帯アドレス登録ページへ遷移
                    if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
                        if (!$objCustomer->hasValue('email_mobile')) {
                            SC_Response_Ex::sendRedirectFromUrlPath('entry/email_mobile.php');
                            SC_Response_Ex::actionExit();
                        }
                    }
                    // スマートフォンの場合はログイン成功を返す
                    elseif (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
                        echo SC_Utils_Ex::jsonEncode(array('success' =>
                                                     $this->getNextLocation($this->cartKey, $this->tpl_uniqid,
                                                                            $objCustomer, $objPurchase,
                                                                            $objSiteSess)));
                        SC_Response_Ex::actionExit();
                    }

                    SC_Response_Ex::sendRedirect(
                            $this->getNextLocation($this->cartKey, $this->tpl_uniqid,
                                                   $objCustomer, $objPurchase,
                                                   $objSiteSess));
                    SC_Response_Ex::actionExit();
                }
                // ログインに失敗した場合
                else {
                    // 仮登録の場合
                    if (SC_Helper_Customer_Ex::checkTempCustomer($objFormParam->getValue('login_email'))) {
                        if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
                            echo $this->lfGetErrorMessage(TEMP_LOGIN_ERROR);
                            SC_Response_Ex::actionExit();
                        } else {
                            SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR);
                            SC_Response_Ex::actionExit();
                        }
                    } else {
                        if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
                            echo $this->lfGetErrorMessage(SITE_LOGIN_ERROR);
                            SC_Response_Ex::actionExit();
                        } else {
                            SC_Utils_Ex::sfDispSiteError(SITE_LOGIN_ERROR);
                            SC_Response_Ex::actionExit();
                        }
                    }
                }
                break;
            // お客様情報登録
            case 'nonmember_confirm':
                $this->tpl_mainpage = $nonmember_mainpage;
                $this->tpl_title = $nonmember_title;
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $this->lfCheckError($objFormParam);

                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    $this->lfRegistData($this->tpl_uniqid, $objPurchase, $objCustomer, $objFormParam);

                    $arrParams = $objFormParam->getHashArray();
                    $shipping_id = $arrParams['deliv_check'] == '1' ? 1 : 0;
                    $objPurchase->setShipmentItemTempForSole($objCartSess, $shipping_id);

                    $objSiteSess->setRegistFlag();

                    SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH);
                    SC_Response_Ex::actionExit();
                }
                break;

            // 前のページに戻る
            case 'return':
                SC_Response_Ex::sendRedirect(CART_URL);
                SC_Response_Ex::actionExit();
                break;

            // 複数配送ページへ遷移
            case 'multiple':
                // 複数配送先指定が無効な場合はエラー
                if (USE_MULTIPLE_SHIPPING === false) {
                    SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
                    SC_Response_Ex::actionExit();
                }

                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $this->lfCheckError($objFormParam);

                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    $this->lfRegistData($this->tpl_uniqid, $objPurchase, $objCustomer, $objFormParam, true);

                    $objSiteSess->setRegistFlag();

                    SC_Response_Ex::sendRedirect(MULTIPLE_URLPATH);
                    SC_Response_Ex::actionExit();
                }
                $this->tpl_mainpage = $nonmember_mainpage;
                $this->tpl_title = $nonmember_title;
                break;

            // お客様情報入力ページの表示
            case 'nonmember':
                $this->tpl_mainpage = $nonmember_mainpage;
                $this->tpl_title = $nonmember_title;
                $this->lfInitParam($objFormParam);
                // ※breakなし

            default:
                // 前のページから戻ってきた場合は, お客様情報入力ページ
                if (isset($_GET['from']) && $_GET['from'] == 'nonmember') {
                    $this->tpl_mainpage = $nonmember_mainpage;
                    $this->tpl_title = $nonmember_title;
                    $this->lfInitParam($objFormParam);
                } else {
                    // 通常はログインページ
                    $this->lfInitLoginFormParam($objFormParam);
                }

                $this->setFormParams($objFormParam, $objPurchase, $this->tpl_uniqid);
                break;
        }

        // 入力値の取得
        $this->arrForm = $objFormParam->getFormParamList();

        // 記憶したメールアドレスを取得
        $this->tpl_login_email = $objCookie->getCookie('login_email');
        if (!SC_Utils_Ex::isBlank($this->tpl_login_email)) {
            $this->tpl_login_memory = '1';
        }

        // 携帯端末IDが一致する会員が存在するかどうかをチェックする。
        if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
            $this->tpl_valid_phone_id = $objCustomer->checkMobilePhoneId();
        }
	$this->arrErr //エラーログ
    }
mizuvan
投稿日時: 2014/11/27 17:04
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 会員登録せずに購入手続きができなくなりました。
失礼いたしました。

カスタマイズした部分は、おっしゃる通りの会員登録時フォーム初期化のところです。

data/class/helper/SC_Helper_Customer.php

    /**
     * 会員登録時フォーム初期化
     *
     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
     * @param boolean      $isAdmin      true:管理者画面 false:会員向け
     * @access public
     * @return void
     */
    public function sfCustomerEntryParam(&$objFormParam, $isAdmin = false)
    {
        SC_Helper_Customer_Ex::sfCustomerCommonParam($objFormParam);
        SC_Helper_Customer_Ex::sfCustomerRegisterParam($objFormParam, $isAdmin);
        if ($isAdmin) {
            $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('NUM_CHECK'));
            $objFormParam->addParam('携帯メールアドレス', 'email_mobile', null, 'a', array('NO_SPTAB', 'EMAIL_CHECK', 'SPTAB_CHECK' ,'EMAIL_CHAR_CHECK', 'MOBILE_EMAIL_CHECK'));
            $objFormParam->addParam('会員状態', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
            $objFormParam->addParam('SHOP用メモ', 'note', LTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK'));
            $objFormParam->addParam('所持ポイント', 'point', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK'), 0);
            $objFormParam->addParam('登録日', $prefix . 'day2', STEXT_LEN, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK')); //追加
        }

        if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
            // 登録確認画面の「戻る」ボタンのためのパラメーター
            $objFormParam->addParam('戻る', 'return', '', '', array(), '', false);
        }
    }
BLT
投稿日時: 2015/2/17 23:45
対応状況: −−−
新米
登録日: 2014/6/27
居住地:
投稿: 1
Re: 会員登録せずに購入手続きができなくなりました。
はじめまして。

私もmizuvan様と同様のトラブルが発生してここにたどり着きました。


皆様のご指摘などを参考にしてみましたところ、私の環境では、

1.LC_Page_Shopping.phpの「不要なパラメーターの削除」にSC_helper_Customer.phpで追加した必須項目を増やす

  $objFormParam->removeParam('order_***'); //追加

2.SC_helper_Customer.phpの[reminder_answer]と[reminder]をコメントアウトしている(使用していない)ので、LC_Page_Shopping.phpの同項目もコメントアウト

  //$objFormParam->removeParam('order_reminder');
  //$objFormParam->removeParam('order_reminder_answer');

3.デフォルトのデザインテンプレートでは[性別]が必須項目になっているのですが、当方が導入しているデザインテンプレートでは、「性別」の項目自体が表示されていなかったので、「不要なパラメーターの削除」に追加

  $objFormParam->removeParam('order_sex'); //追加


これで解決しました。



すでに解決済みかもしれませんが、会員項目の変更した個所を見直すといいかもしれません。



EC-CUBE 2.13.2
DBサーバー PostgreSQL 8.1.23
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,290名です
総投稿数は109,689件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.