バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > セッションを別サイトで取得するには

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nissi
投稿日時: 2010/4/7 18:58
対応状況: −−−
新米
登録日: 2010/4/7
居住地:
投稿: 5
セッションを別サイトで取得するには
初めまして、いつも勉強させていただいております。

早速ですが表題についてご質問させていただきます。

現在、ECCUBEで制作したECサイトとWordpressで制作したサイト(以下:WPサイト)があります。
ECサイトでのログイン情報のセッションをWPサイトで利用したいと考えています。

セッションを利用する理由としては、「会員登録をし、かつ現在ログインをしている状態」でなければ閲覧できないコンテンツを設ける為です。
コンテンツによっては一部商品の購入歴の有無も調べたいと考えておりますが、当面は会員IDさえとれれば構いません。

WPサイトではECCUBEのデータベースにアクセスはできる状態です。
調べた感じではデータベースのdtb_sessionにセッションを格納しているようですが、ここからどのようにして会員情報を取得しているのかで、詰まっております。

一度ECサイトに飛んでから再度WPサイトに戻る仕様でも構わないのですが、お恥ずかしながらそれすら出来ておりません。

ECサイトでの会員情報のセッションをWPサイト(別サイト)で取得することは可能でしょうか?

もしよければご教授いただければと思います。


バージョンは2.4.3を利用しています。
ECサイトとWPサイトは同じサーバにあります。
MYSQLではWPサイトでECCUBEのデータベースにアクセスできる状況です。

初めての投稿ですので、お見苦しい点や足りない情報などあるかと存じますが、何卒よろしくお願い致します。
kishik
投稿日時: 2010/4/7 19:13
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: セッションを別サイトで取得するには
"dtb_session"の中の"sess_data"に
"member_id"というのがありますよ。


-----
カスタマイズ承ります
http://ec-cube.ec-orange.jp/
nissi
投稿日時: 2010/4/8 10:36
対応状況: −−−
新米
登録日: 2010/4/7
居住地:
投稿: 5
Re: セッションを別サイトで取得するには
早速ありがとうございます!
今cookieで"sessid"は取得できました。
"sess_data"の取得もできるのですが、

cart|a:2:{s:8:"prev_url";s:68:"/eccube/html/?transactionid=b4c3a991ad2f945eb3d8e41803cd4349507ba0d9";i:0;a:2:{s:5:"price";s:0:""; 
・・・

のように出力されます。

これをちゃんとした配列で取得するにはどうすればいいでしょうか。
あまりMYSQLには詳しくなくて・・・
お手数をお掛け致しますが、よろしくお願い申し上げます。
kishik
投稿日時: 2010/4/8 10:44
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: セッションを別サイトで取得するには
$_SESSIONまたはSC_Sessionクラスを使えば
バックエンドDBが何かを気にすることなく値を取り出せますよ。
試してみてください。

また、EC-CUBEのソースの中でもいろいろなところで使われているので、そちらを参考にするのもいいかもしれません。


-----
カスタマイズ承ります
http://ec-cube.ec-orange.jp/
ramrun
投稿日時: 2010/4/8 13:01
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: セッションを別サイトで取得するには
serialize()されているので、unserialize()すればよいです。
↑間違いです(汗)。


すみません。
これ、dtb_sessionから直接情報を取り出すのはよいのですが、どうやってクライアントと紐付けするんですか?

引用:
ECサイトとWPサイトは同じサーバにあります。
MYSQLではWPサイトでECCUBEのデータベースにアクセスできる状況です。

機器が一緒なのはわかりましたが、ドメインもいっしょということでしょうか?
nissi
投稿日時: 2010/4/8 13:54
対応状況: −−−
新米
登録日: 2010/4/7
居住地:
投稿: 5
Re: セッションを別サイトで取得するには
ありがとうございます!

なるほど、やはりそれが一番早いですか。
WPサイトでSC_Sessionのクラスを使うことも考えたのですが、なかなか上手くいかず・・・クラス周りや変数とか関係するクラスとかが多いので。
しかし、今後の事を考えるとクラスを使える環境をWP内に構築するのがベストでしょうね。

あまり時間がないのでsess_dataをunserialize出来ればとりあえず急場はしのげるのですが、時間ができればきちんと構築することにします。

アドバイス本当に有難うございます!
nissi
投稿日時: 2010/4/8 14:07
対応状況: −−−
新米
登録日: 2010/4/7
居住地:
投稿: 5
Re: セッションを別サイトで取得するには
ご回答ありがとうございます!
unserializeを試してみたところfalseが返ってきました。

これはserializeしているクラスを読み込んでいないとunserializeできないということでしょうか?
確か昔読んだ本にデータ型を変換できないとかなんとか書いていたような気もします。

クラスを読まずにunserializeはできないですよね。
もう少し調べてみます。



>>機器が一緒なのはわかりましたが、ドメインもいっしょということでしょうか?

あ、ドメインが同じということです。申し訳ありません。
ramrun
投稿日時: 2010/4/8 14:42
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: セッションを別サイトで取得するには
ごめんなさい。
形だけみてunserializeとか書いてしまいました(汗)。

↓のnote欄にあるunserializesessionとかどうでしょう。

PHP : session_decode
http://jp2.php.net/session_decode
nissi
投稿日時: 2010/4/8 15:37
対応状況: −−−
新米
登録日: 2010/4/7
居住地:
投稿: 5
Re: セッションを別サイトで取得するには
おお!ありがとうございます!
無事sess_dataを展開できました!

同じ事をしたい方がいるかはわかりませんが、一応unserializesessionを利用したソースを書いておきます。
※ただしベタ書きで汚いソースですので、お目汚し申し訳ありません(汗)

===========================================================

//cookieを取得 無い場合はNULL
$sessid = isset($_COOKIE["PHPSESSID"]) ? $_COOKIE["PHPSESSID"] : NULL;

//$sessidに値がある場合はデータベース接続
if($sessid != NULL){
$conn = mysql_connect(DBSERVER,DBUSER,DBPASS);

//$sessidを条件にsess_dataを取得
$select = mysql_select_db(DCNAME,$conn);
$sql = "SELECT sess_data FROM dtb_session WHERE sess_id = '".$sessid."'";
$query = mysql_query($sql,$conn);
$rst = mysql_fetch_array($query);

function unserializesession($data) {
$vars=preg_split('/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff^|]*)\|/',
$data,-1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
for($i=0; $vars[$i]; $i++) $result[$vars[$i++]]=unserialize($vars[$i]);
return $result;
}
//sess_dataデータをunserialize
$arr = unserializesession($rst[0]);
}

===========================================================

おかげさまでなんとか形にできました。
的確なアドバイスがなければいつまでかかっていたかわかりません。自身の勉強にもなりました。
本当に本当にありがとうございました!重ねてお礼申し上げます。

いつか余裕が出来たときは、外部サイトでECCUBEのクラスを利用出来るようなものを作ってみたいと思います。
その際はきちんとしたものを作れるよう頑張ります。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1286
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.