バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > モバイル「https」アクセスで購入完了まで到達できません。

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Linux-user
投稿日時: 2009/3/3 21:30
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
モバイル「https」アクセスで購入完了まで到達できません。
[EC-CUBE] 2.3.4(手動アップデート済)
[レンタルサーバ] クララオンライン
[OS] Red Hat Enterprise Linux 5
[PHP] PHP 5.1.6
[データベース] PostgreSQL 8.3.4
[WEBサーバ] Apache(ver 2.2.3 )

[現象]
モバイルページで順当に商品ページ、カートから辿っていき、
SSLのかかったご注文手続きから新規登録を押すと何故かTOPページに戻ってしまいます。

URL(通常) http://www.○○○.co.jp
URL(セキュア) https://www.○○○.co.jp


また、登録済のメールアドレス・パスワードを入力し、送信を押した場合でも
「システムエラーが発生しました。
大変お手数ですが、サイト管理者までご連絡ください。」と表示されます。
--------------------------------------------------------------------------------
検証には「i-mode HTML Simulator II」を使用致しました。
※IE6でも検証済みですが、どちらもエラーとなります。
※「PC」用ページは全く問題ないのですが、「mobile」用のページで事象が発生します。
--------------------------------------------------------------------------------


ただ、直接「https」を「http」でアクセス(再読込み)すると、
それ以降の買い物は正常に完了します。

以下のログが、「https」アクセス時のエラーなのですが、
「https」でアクセスしてもモバイルで正常に買い物ができる状態にするには
どの箇所を修正すれば宜しいでしょうか。

どうかご教授の程、宜しくお願い致します。

data/site.log
引用:
2009/03/03 20:45:06 [/mobile/cart/index.php] https://ドメイン名/mobile/cart/index.php

SERVER_ADDR:***.**.***.**
REMOTE_ADDR:***.***.**.***
USER_AGENT:DoCoMo/2.0 ISIM0707(c100;TB;W24H16;ser000000000000000;icc00000000000000000000)

SELECT session_id FROM dtb_mobile_ext_session_id WHERE param_key = ? AND param_value = ? AND url = ? AND create_date >= ?
DB Error: unknown error

SELECT session_id FROM dtb_mobile_ext_session_id WHERE param_key = 'confirm' AND param_value = '注文する' AND url = 'mobile/cart/index.php' AND create_date >= '2009-03-03 20:15:06' [nativecode=ERROR: invalid byte sequence for encoding "UTF8": 0x92
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".]

/var/www/ドメイン名/○○○/□□□/html/mobile/cart/index.php 29:require_once
/var/www/ドメイン名/○○○/□□□/html/mobile/require.php 30:require_once
/var/www/ドメイン名/○○○/□□□/data/require_base.php 89:SC_SessionFactory_UseRequest->initSession
/var/www/ドメイン名/○○○/□□□/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php 187:SC_SessionFactory_UseRequest->getSessionId
/var/www/ドメイン名/○○○/□□□/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php 162:SC_SessionFactory_UseRequest->getExtSessionId
/var/www/ドメイン名/○○○/□□□/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php 93:SC_Query->get
/var/www/ドメイン名/○○○/□□□/data/class/SC_Query.php 402:SC_DbConn->getOne
/var/www/ドメイン名/○○○/□□□/data/class/SC_DbConn.php 98:DB_common->getOne
/var/www/ドメイン名/○○○/□□□/data/module/DB/common.php 1237:DB_common->execute
/var/www/ドメイン名/○○○/□□□/data/module/DB/common.php 959:DB_pgsql->simpleQuery
/var/www/ドメイン名/○○○/□□□/data/module/DB/pgsql.php 338:DB_pgsql->pgsqlRaiseError
/var/www/ドメイン名/○○○/□□□/data/module/DB/pgsql.php 786:DB_common->raiseError
/var/www/ドメイン名/○○○/□□□/data/module/DB/common.php 1853:PEAR->raiseError
/var/www/ドメイン名/○○○/□□□/data/module/PEAR.php 557:DB_Error->DB_Error
/var/www/ドメイン名/○○○/□□□/data/module/DB.php 893:PEAR_Error->PEAR_Error
from ***.***.**.***
seasoft
投稿日時: 2009/3/4 2:26
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: モバイル「https」アクセスで購入完了まで到達できません。
下記チェンジセットを当てると、副作用により直るかも。
http://svn.ec-cube.net/open_trac/changeset/17863


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

Linux-user
投稿日時: 2009/3/4 22:13
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: モバイル「https」アクセスで購入完了まで到達できません。
ご回答ありがとうございます。

チェンジセットを確認し、該当ソース部分を差替えて適用させてみたのですが、、
同じエラーが表示されました。


さらに深く調べてみると、どうやらエラーの際にセッションIDが変化しているのですが、

引用:
モバイルTOPページ 正常
http://ドメイン名/mobile/index.php?PHPSESSID=ond7kpg5(以下省略・・)

 ↓↓↓

ブランドページ 正常
http://ドメイン名/mobile/products/list.php?category_id=302&PHPSESSID=ond7kpg5(以下省略・・)

 ↓↓↓

商品詳細ページ 正常
http://ドメイン名/mobile/products/detail.php?product_id=10036&PHPSESSID=ond7kpg5(以下省略・・)

 ↓↓↓

数量指定ページ 正常
http://ドメイン名/mobile/products/detail.php?product_id=10036&PHPSESSID=ond7kpg5(以下省略・・)

 ↓↓↓

カートの中 正常
http://ドメイン名/mobile/cart/index.php?product_id=10036&PHPSESSID=ond7kpg5(以下省略・・)&transactionid=d5f3e6e(以下省略・・)

 ↓↓↓

ご注文手続き 正常
https://ドメイン名/mobile/shopping/index.php?PHPSESSID=ond7kpg5(以下省略・・)&transactionid=d5f3e6e(以下省略・・)

 ↓↓↓

新規登録ボタンを押すとエラー発生:TOPページに戻ってしまう・・
https://ドメイン名/index.php?PHPSESSID=cnc40n0(以下省略・・)

上記のように、恐らくセッションの受け渡しに問題があるような状態なのですが、
SSLを導入した場合、セッション関係の処理がおかしくなるのでしょうか・・
--------------------------------------------------------------------------------
※PCサイトのほうは、何の問題もなく、正常にSSLに対応しています。
--------------------------------------------------------------------------------

この場合、どのような修正が必要になりますでしょうか。 ・・困りました
どうかご教授の程、宜しくお願い致します。
tao_s
投稿日時: 2009/3/5 1:19
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 799
Re: モバイル「https」アクセスで購入完了まで到達できません。
引用:
ご注文手続き 正常
https://ドメイン名/mobile/shopping/index.php?PHPSESSID=ond7kpg5(以下省略・・)&transactionid=d5f3e6e(以下省略・・)
 ↓↓↓

新規登録ボタンを押すとエラー発生:TOPページに戻ってしまう・・


の新規登録ボタンのフォームのactionにPHPSESSIDは入ってますか?

あと確か2.3.0あたりのバージョンだと携帯のセッションが正常に処理されていなかったと思います。session_factoryだったかな?
seasoft
投稿日時: 2009/3/5 2:16
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: モバイル「https」アクセスで購入完了まで到達できません。
> チェンジセットを確認し、該当ソース部分を差替えて適用させてみたのですが、、
> 同じエラーが表示されました。

下記エラー文も、日時以外は同一ですか?

引用:
SELECT session_id FROM dtb_mobile_ext_session_id WHERE param_key = 'confirm' AND param_value = '注文する' AND url = 'mobile/cart/index.php' AND create_date >= '2009-03-03 20:15:06' [nativecode=ERROR: invalid byte sequence for encoding "UTF8": 0x92
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".]


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

Linux-user
投稿日時: 2009/3/5 16:54
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: モバイル「https」アクセスで購入完了まで到達できません。
ご回答ありがとうございます。

tao_s様
> 新規登録ボタンのフォームのactionにPHPSESSIDは入ってますか?

確認致しましたところ、新規登録ボタンには
/data/Smarty/templates/default/mobile/shopping/index.tpl  ↓↓↓引用:
<form name="member_form" id="member_form" method="post" action="<!--{$smarty.const.MOBILE_URL_DIR}-->entry/kiyaku.php">
<div align="center"><input type="submit" value="新規登録"></div><br>
</form>

送信ボタンには
/data/Smarty/templates/default/mobile/shopping/index.tpl  ↓↓↓引用:
<form name="member_form" id="member_form" method="post" action="./deliv.php">
<input type="hidden" name="mode" value="login">
<!--{if !$tpl_valid_phone_id}-->
■以前にご注文された方<br>
(モバイル又はPCでご登録済み)<br>
▼メールアドレス<br>
<!--{assign var=key value="login_email"}-->
<font color="#FF0000"><!--{$arrErr[$key]}--></font>
<input type="text" name="<!--{$key}-->" value="<!--{$tpl_login_email|escape}-->"
size="40" istyle="3"><br>
<!--{else}-->
<input type="hidden" name="login_email" value="dummy">
<!--{/if}-->
▼パスワード<br>
<!--{assign var=key value="login_pass"}--><font color="#FF0000"><!--{$arrErr[$key]}--></font>
<input type="password" name="<!--{$key}-->" size="40" istyle="3"><br>
<center><input type="submit" value="送信" name="log"></center><br>
<a href="<!--{$smarty.const.MOBILE_URL_DIR}-->forgot/index.php">パスワードをお忘れの方はこちら</a><br>
</form>
ソースにはactionにPHPSESSIDは入っていないようです。
実際のブラウザで確認したページのソースにも入っていませんでした。



seasoft様
> 下記エラー文も、日時以外は同一ですか?

はい、日時以外は同一でした。



試しに、/data/install.php 部分にて  ↓↓↓引用:
define ('MOBILE_SSL_URL', SSL_URL . 'mobile/');

 ↓↓↓

define ('MOBILE_SSL_URL', 'http://ドメイン名/mobile/');

上記のように書き換えると、全く問題なく画面推移し、購入まで完了できます。
ただ、SSLではなくなりますので、それが問題です。


EC CUBEの構築事例で紹介されていますページのモバイルページをいろいろと巡回し、
確認してみたのですが、みなさんほとんどhttpsの問題を解決されているようです。
http://www.ec-cube.net/product/cases/backnumber.php
--------------------------------------------------------------------------------
当方で導入しているSSLはジオトラスト クイックSSLプレミアムで、SSL自体は携帯にも対応しているようです。
--------------------------------------------------------------------------------

モバイル版でSSLを利用するには、
デフォルト設定を少しカスタムしないといけないのでしょうか・・。

ご教授の程、宜しくお願い致します。
seasoft
投稿日時: 2009/3/5 17:11
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: モバイル「https」アクセスで購入完了まで到達できません。
根本的な原因は、UAから送出された SJIS の文字コードを内部エンコード(UTF-8)に変換できていないのが原因の予感がします。

mbstring.detect_order を SJIS-win に固定するとどうですか?


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

Linux-user
投稿日時: 2009/3/6 18:40
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: モバイル「https」アクセスで購入完了まで到達できません。
ご回答ありがとうございます。
mbstring.detect_orderはデフォルトでautoでしたので、
本件に関しては支障はないようなのですが、
いろいろとセッションあたりを検索していましたところ、以下のサイトがHITし、

-OASIS- - 今日のメモ「携帯におけるセッションとセキュリティ(PHP)」
http://pochi.orz.ne.jp/oasis/archive_278.htm


「/html/mobile/.htaccess」内で
「php_flag session.use_trans_sid 1」が有効であるのに何故だろうと疑問に感じていましたが、
HTTPとHTTPS(SSL)をまたいで通信する場合、
外部サイトとみなされ、セッションIDが付加されないという記事を確認致しました。

「/html/mobile/」階層にphpinfoを置いてみて確認しましたところ、
--------------------------------------------------------------------------------
■HTTP でのアクセス:
session
Directive          Local Value  Master Value
session.use_trans_sid 1          0

■HTTPSでのアクセス:
session
Directive          Local Value  Master Value
session.use_trans_sid 0          0
--------------------------------------------------------------------------------
HTTPS時の「session.use_trans_sid」がHTTP時のものとは異なっておりました。


SSL/非SSL間でのセッションIDの受け渡し
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=1853&forum=5&post_id=6370#forumpost6370

URIパラメータへの埋め込みか、formにhiddenで埋め込みをして、
セッションIDを渡してあげれば大丈夫なようなのですが、

SSL/非SSL間でのセッションを
input typeのvalueで利用する場合は、どのような記述になりますでしょうか。

会員情報入力ページなど、
入力事項のあるページの場合、action部分の後ろに<!--{$smarty.const.SID}-->を入力すると、
/data/Smarty/templates/default/mobile/entry/set1.tpl ↓↓↓引用:
<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->
?<!--{$smarty.const.SID}-->">

セッションは引き継げるのですが、ブラウザで確認時、次のページの先頭に ↓↓↓引用:
Array ( [mode] => set2 [sex] => □ [year] => □□□□ [month] => □□ [day] => □□ [zip01] => □□□ [zip02] => □□□□ [submit] => 次へ [email] => □□□□□@dj.pdx.ne.jp [password] => □□□□□□□ [reminder] => □ [reminder_answer] => □□□ [name01] => □□□□□ [name02] => □□□□□ [kana01] => □□□□□ [kana02] => □□□□□ )
・・と、ソースコードが表示されてしまいます。

これを隠したいので、hidden要素とvalueで指定したいのですが、 ↓↓↓引用:
<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
<input type="hidden" name="PHPSESSID" value="<!--{$smarty.const.SID}-->">

valueに<!--{$smarty.const.SID}-->を指定すると、正常に画面推移しませんでした。

valueにセッションを表示させるには、
どのような記述を加える必要がありますでしょうか。

ご教授の程、宜しくお願い致します。
homan
投稿日時: 2009/3/6 19:43
対応状況: −−−
仙人
登録日: 2007/7/2
居住地: 宮崎県宮崎市
投稿: 633
Re: モバイル「https」アクセスで購入完了まで到達できません。
試したことはないですが、

<!--{$smarty.session.id}-->


ではいかがでしょうか。


----------------
このコミュニティでの投稿はボランティアの範囲に留めさせていただいています。個別の相談やカスタマイズは有償にて承っておりますのでご相談下さい。

[url=http://www.eccube-school.jp/]EC-CUBE

Linux-user
投稿日時: 2009/3/6 20:27
対応状況: 確認中
常連
登録日: 2008/1/8
居住地:
投稿: 62
Re: モバイル「https」アクセスで購入完了まで到達できません。
ご回答ありがとうございます。
/data/Smarty/templates/default/mobile/entry/set1.tpl  ↓↓↓引用:
<form name="form1" method="post" action="<!--{$smarty.server.PHP_SELF|escape}-->">
<input type="hidden" name="PHPSESSID" value="<!--{$smarty.session.id}-->">

上記を適用すると、value=""と空になり、反映されませんでした・・。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
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.