質問 > フロント機能 > ページ遷移の際のセッション |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
AMUAMU |
投稿日時: 2013/2/14 4:16
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: ページ遷移の際のセッション 問題が解決したようで何よりです。
やはり何かしら飛ばしていた処理があったのが問題だったようですね
|
osamuya |
投稿日時: 2013/2/14 1:18
対応状況: 解決済
|
常連 登録日: 2013/2/4 居住地: 東京 投稿: 65 |
Re: ページ遷移の際のセッション
|
osamuya |
投稿日時: 2013/2/13 12:41
対応状況: −−−
|
常連 登録日: 2013/2/4 居住地: 東京 投稿: 65 |
Re: ページ遷移の際のセッション [EC-CUBE] 2.12.1、新規インストール(カスタマイズ中)
[レンタルサーバ] IIJ [OS] Linux CentOS6 [PHP] php 5.1.6 MySQL 5.0.95 [WEBサーバ] Apache/2.2.3 (CentOS) [ブラウザ] IE6~最新ブラウザーまで AMUAMUさん、ありがとうございます。セッションの部分大変勉強になりました。 今今、テンプレートを一つ一つ検証しながら、引き続き調べております。 >抽象的な質問なので詳しくはわかりませんが、データが引き継げていないのでは無く、必要なデータを必要な場所に格納する処理を飛ばしているのが問題かと思います。 今、いろいろ調べていたのですが、正にその通りだと思います。 具体的には、(EC-CUBE)/shopping/payment.phpのページで「お支払い方法の指定」が表示されないという問題です。(現在、カード払いと代引きを選択できるようにしています。)MacのChromeだと概ね問題なく表示されるのですが、その他のブラウザーだとだいたい表示が消えてしまってお支払い指定ができない状態になります。 正常に表示される場合と、非表示になってしまう場合のSmartyの変数の値をダンプしてみると、$arrShippingの値が読み込まれていなかったです。以下の変数が、変数自体がそもそもないか、または変数の値が空かゼロになってしまった時に非表示になってしまうようです。 <!--{$arrShipping.0.shipment_item}--><br /> <!--{$cartKey}--><br /> <!--{$arrDeliv}--><br /> <!--{$is_single_deliv}--><br /> <!--{$arrPrices}--><br /> <!--{$arrDelivDate}--><br /> <!--{$arrPayment}--><br /> <!--{$arrDelivTime}--><br /> <!--{$img_show}--><br /> これらの値がないということは、そもそもお支払方法の指定がうまくデータとして格納されていないのだと思うのですが、管理画面での決済モジュールの設定などはきちんとやっています。 これらの値をどのようにして安定して読み込むかというところと、何故に変数が格納されていないか…を探るというのが課題になるでしょうか? 余談なのですが、ちょっと参考になるかもしれないですが、 1. テンプレートをデフォルトに戻す 2. Smartyのキャッシュをすべてクリアする 3. ブラウザーのキャッシュもクリアする 4. EC-CUBEにアクセスして商品を購入、完了する。(この時点でお支払い方法の選択は必ずできます) 5. 新しいテンプレートに入れ替える の手順を踏むと、しばらくの間はお支払い選択ができるようになります。 基本的なことがまだまだわかっていないので、全く見当違いなこと書いていましたら、どうぞご指摘ください。 よろしくお願いします。 [追記] 申し訳ありません。追記情報です。 お届け先の複数指定の方を選択した際([EC-CUBE]/shopping/multiple.php)には、カートに入れた商品情報の一覧と複数指定した住所のプルダウンなどが表示されていませんでした。 1つ前のページ[EC-CUBE]/shopping/?from=nonmember&…で、何かしら問題があるのでしょか。 [追記2] いろいろ試していて後から後からいろいろな発見があって申し訳ないのですが、 ゲスト購入の場合のみちょっとおかしな動作になっているようです。 デフォルトのページ遷移は、 [EC-CUBE]/cart/? カート [EC-CUBE]/shopping/?transactionid=xxxxx ログイン [EC-CUBE]/shopping/? ゲスト購入での住所入力 となっているのですが、今回はゲスト購入のみにしているので、以下のようにカートからゲスト購入の住所入力欄に直接遷移しています。 [EC-CUBE]/cart/? カート [EC-CUBE]/shopping/? ゲスト購入での住所入力 この場合、スキップしているログインページを挟んで遷移させるとうまくお支払い選択ができるようになります。 これは何かしら関係がありそうなのですが、何が関係しているのかわからない次第です。 [追記] http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=DESC&topic_id=1561&forum=10 過去に同じ記事がありました。しかし未だ持ってうまくいっていません。 |
AMUAMU |
投稿日時: 2013/2/13 2:32
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: ページ遷移の際のセッション まず一般論に関して
PHPのセッション管理について入門書やサイトで確認されると良いと思います。 大きな勘違いというか考え方のスタートラインから異なっているようです。 基本的な考え方で言えばEC-CUBEではPHPアプリケーションの標準系の一つであるPRGパターン(POST-REDIRECT-GETパターン)を採用しています。 つまり、ページ毎に処理は独立していて、ページ処理をまたいで引き継ぐデータは基本的に無い(あっても非常に限定的)となります(1つのページ処理に入力画面表示、その画面に関するデータ処理、次ページへの遷移がまとまっているという意味です)。 例を出すと、カートへ投入するボタンがある商品詳細ページの処理では、「商品表示およびカート投入フォーム表示」「カート投入時のデータ格納処理」「カゴの中ページへの遷移」の3つを含めて1ページが構成されています。画面遷移する時には表向きはデータの引き継ぎはありません(PHPセッションを通して透過的に管理されて引き継がれます) 具体的な話となっている部分ですが $arrPaymentという変数は支払い方法ページ等では表示などに利用していますが、ページ間で引き継ぐ変数ではありません。 抽象的な質問なので詳しくはわかりませんが、データが引き継げていないのでは無く、必要なデータを必要な場所に格納する処理を飛ばしているのが問題かと思います。 また質問について下記を一読頂き、カスタマイズについては具体的に何をしようとして、実際に何をして、どういう風になって、何で躓いているかを、作業をした内容を含め提示されるのが良いと思います。 http://xoops.ec-cube.net/modules/tinyd0/index.php?id=8
|
osamuya |
投稿日時: 2013/2/12 22:01
対応状況: −−−
|
常連 登録日: 2013/2/4 居住地: 東京 投稿: 65 |
ページ遷移の際のセッション 度々お世話になります。
一般論的といいますか、概要のような機能の質問になりますが、商品購入完了までの過程でそれぞれのページ遷移では何らかのセッション情報を引き継いで「xxxさんは、xxxをいくつ購入する」というふうになっているかと思うのですが、デフォルトのページ遷移の中でテンプレートの一部をスキップしたり、また追加したりした際には、どの変数を引き継げばよいのでしょうか? 具体的な話でいうと、現在「会員登録」からの購入は端折っていまして、ゲスト購入だけのページ遷移になっています。その際に途中の会員登録のページをスキップすると、$arrPaymentの変数の値が引き継がれていない時がありまして、お支払い方法の選択ができなくなる時があります。 なんらかの原因でセッションが切れているような気がしているのですが、テンプレートをカスタマイズする際に重要な値を引き継げていないような挙動をします。(あくまでも予想なのですが…。) Formのhiddenで次のページに渡している情報やいろいろな情報があると思うのですが、それらの説明などがあるDocumentなどがどこかにないでしょうか? わかる方いらっしゃいましたら、アドバイスお願いします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |