バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > その他 > ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Gaz
投稿日時: 2006/10/27 15:13
対応状況: −−−
半人前
登録日: 2006/10/25
居住地: 東京
投稿: 29
ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
ゲストアカウントでチェックアウトしようとすると個人情報入力後に

INSERT INTO dtb_order_temp(order_name01,order_name02,order_kana01,order_kana02,order_zip01,order_zip02,order_pref,order_addr01,order_addr02,order_tel01,order_tel02,order_tel03,order_fax01,order_fax02,order_fax03,order_email,order_sex,order_job,deliv_check,deliv_name01,deliv_name02,deliv_kana01,deliv_kana02,deliv_zip01,deliv_zip02,deliv_pref,deliv_addr01,deliv_addr02,deliv_tel01,deliv_tel02,deliv_tel03,mail_flag,order_temp_id,order_birth,update_date,customer_id,create_date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now(),?,Now()) DB Error: constraint violation
(実際のクエリは削除)
[nativecode=1048 ** Column 'order_temp_id' cannot be null] 


確認したところ、$_SESSION['site']['uniqid'] が設定されていないためでした。

以下の応急措置で動作しました。

/data/class/SC_SiteSession.php

  /* ユニークIDの取得 */
  function getUniqId() {
    if (!isset($_SESSION['site']['uniqid'])) {
      $this->setUniqId();
    }
    return $_SESSION['site']['uniqid'];
  }

kaki
投稿日時: 2006/10/31 14:23
対応状況: −−−
EC-CUBE開発チーム
登録日: 2006/9/11
居住地:
投稿: 146
Re: ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
>Gaz様

ご報告ありがとうございます。

ただ、ご報告いただきました動作を十分に把握することができず、
そのため、現象の確認ができませんでした。
つきましては、大変お手数ですが、現象の再現方法等の情報を
再度お知らせいただければ幸いでございます。

どうかよろしくお願い申し上げます。

________________
EC-CUBE 開発チーム
nanasess
投稿日時: 2006/11/3 3:57
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
Re: ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
大河内です。

当方でも、以下の手順で再現しました。

1. ブラウザを一旦閉じてセッションを初期化
2. カゴに商品を入れる
3. 購入手続きへのボタンをクリック
4. 会員登録せずに、購入手続きへをクリック
5. 個人情報を入力し、次へをクリック
6. 該当のエラーが発生

3〜4 にかけての処理で、 setUniqId() をコールしたのにもかかわらず、 $_SESSION['site']['uniqid'] がセットされないのが原因のようです。
html/cart/index.php の 83行目のリダイレクトをコメントアウトして、リダイレクトを抑制すると、 $_SESSION['site']['uniqid'] に値が常にセットされているのを確認できました。
しかし、ページをリダイレクトしたタイミングで、 $_SESSION['site']['uniqid'] の値が喪失してしまい、該当のエラーが発生するようです。
しかし、同じ手順を繰り返しても、正常に処理できるケースもありますので、根本的な原因を調べるには、もう少しちゃんとした調査が必要です。
(PHP 自体のバグの可能性も。。。)

とりあえず、 リダイレクトをしなければ良さそうなので、 Gaz 様のような処理に変更することで、この不具合は回避可能だと思います。
Gaz
投稿日時: 2006/11/6 12:23
対応状況: −−−
半人前
登録日: 2006/10/25
居住地: 東京
投稿: 29
Re: ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
元投稿者の當田です。

IIS6 / PHP 5.1.4 / EC-CUBE 1.0.1Beta の環境で PHPのセッションとデータベース内のセッションを監視しながら nanasess 様と同様の手順を繰り返したところ、
$_SESSION['site']['uniqid']が書き込まれないか、空の文字列が記録される現象を確認しました。

空白の文字列が設定されることがありましたので、応急措置は以下のように修正しました。

/* ユニークIDの取得 */
function getUniqId() {
  if(isset($_SESSION['site']['uniqid']) && ($_SESSION['site']['uniqid'] != '')) {
    return $_SESSION['site']['uniqid'];
  }

  $this->setUniqId();
  return $_SESSION['site']['uniqid'];
}


尚、PHP 5.0.5 以降ではsession_set_save_handlerの発動タイミングが変更されているとのことでしたので、
書き込みが不発に終わっているのかどうか確認してみましたが、当方の環境ではread/writeハンドラの不発はありませんでした。
Gaz
投稿日時: 2006/11/6 13:35
対応状況: −−−
半人前
登録日: 2006/10/25
居住地: 東京
投稿: 29
Re: ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
/html/cart/index.php の 83行目のheader()の前に明示的な session_write_close()を入れるだけでも動作することを確認しました。
naka
投稿日時: 2006/11/8 20:02
対応状況: −−−
EC-CUBE開発チーム
登録日: 2006/9/8
居住地: 大阪市北区
投稿: 61
Re: ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
いつもお世話になっております。株式会社ロックオン中川と申します。

バグの発見及び、改修ソースコードのご指摘いただきありがとうございます。

参考にさせていただき以下のような改修を加えることに致しました。

引用:

/* ユニークIDの取得 */
function getUniqId() {
// ユニークIDがセットされていない場合はセットする。
if(!isset($_SESSION['site']['uniqid']) || $_SESSION['site']['uniqid'] == "") {
$this->setUniqId();
}
return $_SESSION['site']['uniqid'];
}


次期バージョンにて反映させていただければと思います。
今後とも何卒よろしくお願い致します。

nanasess
投稿日時: 2006/11/9 10:53
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
Re: ゲストアカウント(ユーザー登録無し)でチェックアウトすると個人情報入力後にエラー
大河内です.

細かいことですが, empty() は使えませんでしょうか?


if (empty($_SESSION['site']['uniqid']) {
    $this->setUniqId();
}


下記一覧を見ると, これでいけるような気がします.
http://www.php.net/manual/ja/types.comparisons.php

このあたりの動作を厳密に理解してないので, 間違っていたらすみません.
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,323名です
総投稿数は110,082件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.