2011-05-13 6 views
0

私のノーフレームワークのコードを私の新しいZendアプリケーションと統合する必要があります。しかし、彼らはセッションを共有する必要があります。私が直面しています問題がある - 私はZendのアプリケーションからセッションにアクセスするカントZend_Session_Namespace from non-Zend PHP

$_SESSION['MyApp']['user']=$user; 

を用いて、非ZendのPHPからのセッション変数を設定していたときに、私が試したの両方 -

print_r($_SESSION['MyApp']['user']); 

$myAppSession = new Zend_Session_Namespace('MyApp'); 
print_r($myAppSession->user); 

動作しません。情報 - 私は

resources.session.name = "MyApp" 

私のブートストラップのiniファイルにあります。

+0

あなたのアプリのネームスペースの影響を受ける可能性があります – Tjorriemorrie

答えて

0

私は道を発見、Zendのセッションは、通常のPHPのセッションとは異なるセッションIDを持っているので、私がやったことは要求してのZendからセッションIDを送信し、そのセッションIDでセッションを開始することでした -

if(isset($_REQUEST['sess_id'])) { 
     $sess_id = $_REQUEST['sess_id']; 
    } 

    session_id($sess_id); 
    session_start(); 

美しいコードではありませんが、機能します。

0

Zend_Session_Namespaceは$ _SESSIONの単なるラッパーですので、これは簡単です。それがうまくいかないと言うと、$ _SESSION配列は空ですか?その場合は、セッションを同じ方法で作成していることを確認してください(同じセッションストレージ、Cookie名などを使用するなど)。

+0

ええ、その空... shudはまっすぐです...私はnon-zend PHPでsession_start()を使うべきですか? –

+0

@ Nandiniはい、ZF以外のアプリケーションで '$ _SESSION'を使用するには、使用前に' session_start() 'を実行する必要があります – Phil

+0

session_start()... not working ... –

0

セッション名をZFセッションの名前空間と混同しています。

セッション名は、セッションクッキーに格納されている値を参照し、実際の内容には影響しません。$_SESSION

アプリがセッションを共有するには、両方ともsession_name()またはsession.name php.iniディレクティブを使用して同じ名前を設定する必要があります。

+0

はsession_name ( 'Cellthis'); session_start(); $ _SESSION ['user'] = $ user;動作しません... –

+0

@ Nandiniなぜ "Cellthis"ですか?あなたのZFセッション名は "MyApp"ですか? – Phil