[Tep-j-general] Re: checkout_success画面が表示されない場合がある

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2004年 9月 23日 (木) 11:50:04 JST


こんにちは、田村です。

山本さん:

> > 注文手続き処理(checkout_process.php)が終了して、
> > 注文手続き完了(checkout_success.php)の先頭の以下の部分で
> > セッション情報が取得できていない可能性が高いと思います。
> > ------------------------------------------------------------
> > // if the customer is not logged on, redirect them to the shopping cart page
> >   if (!tep_session_is_registered('customer_id')) {
> >     tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
> >   }
> > ------------------------------------------------------------
> > 
> 
> 上記部分をコメントアウトして、テストを行ないましたが同じです。

正常なら、「注文手続き処理(checkout_process.php)」の処理が進んで、
その最後で注文メールを送信して、直後に
「注文手続き完了(checkout_success.php)」にリダイレクトされます。

そのときに「カート(shopping_cart.php)」が表示されるというのは、
どこからかリダイレクトされた結果だと思われますので、
スクリプト内でファイル名(shopping_cart.php)を指し示す定数の
FILENAME_SHOPPING_CART をスクリプト中から探すのが
原因追求のひとつの方法です。

それで、FILENAME_SHOPPING_CART をふくむファイル一覧を見ると、
最も可能性が高いのが checkout_success.php の先頭部分だと考えたのが
昨日のメールなんですね。

それが原因でないとすると、追求が難しいんですが、
例えば、catalog/includes/general.php の tep_redirect() の
header() の直前でログを記録すれば、
最後にリダイレクトを実行したスクリプトを記録できます。
(残念ながらインクルードファイル名は特定できないですが。)
------------------------------------------------------------
  function tep_redirect($url) {
    (略)
    // ログに記録する
    error_log('redirect ' . strftime(STORE_PARSE_DATE_TIME_FORMAT)
     . ' ' . $_SERVER['PHP_SELF'] . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
    header('Location: ' . $url);

    tep_exit();
  }
------------------------------------------------------------

* ログが記録されるファイルは、管理画面の[ログ表示/記録]で
  [ログの格納先]で指定できます。
  ログにはapacheの書き込み権限も必要です。

正常なら、ログは次のような行で終わっているはずです。
------------------------------------------------------------
redirect 23/09/2004 11:31:55 /catalog/checkout_process.php
------------------------------------------------------------

-- 
田村敏彦 / 株式会社ビットスコープ
E-mail:tamur****@bitsc*****
http://www.bitscope.co.jp/





Tep-j-general メーリングリストの案内
Back to archive index