2012-01-17 8 views

答えて

5

まず、how PHP sessions workを理解してください。

PHPのセッションデータにDjangoからアクセスするには、セッションID &が必要です。セッションデータが格納されている場所にアクセスする必要があります。

セッションIDを取得するには、そのセッションIDをCookieから取得します。 Cookie名はPHPのsession.name設定の値に設定する必要があります。 Djangoでは、request.COOKIES.get('<value of PHP's session.name setting>')を使ってクッキーからセッションIDを取得できます。明らかに、セッションデータを維持するためにクッキーに頼らないのであれば、このコンポーネントに対して別のアプローチをとる必要があります。

データにアクセスするにはもう少し複雑になります。セッションデータがどこに保存されているかを知る必要があります(デフォルトではファイルに保存されます)。そして、意味のあるpythonオブジェクトに変換する方法。

データが保存されている場所を調べるには、PHPのsession_save_path()関数を使用して session.save_pathの設定値を取得します。これを正しく評価すると、セッションファイルが格納されているディレクトリを取得できます。しかし、セッションデータファイルが明らかにsession_idsに基づいていない場合(私はPHPのインストールをチェックするのに便利ではありません)、おそらくあなた自身のSessionHandlerを書き込んでそれをset_session_save_handler()に登録して、セッションID。

各セッションIDに対応するセッションデータがわかったら、python標準ライブラリ関数を使用して、&データを&にロードしてファイルから読み込むことができます。残念ながら、PHPの標準セッションシリアライズフォーマット(session.serialize_handlerで定義されている)を解析するためのきれいな方法は見つけられません。これは私が知っている標準フォーマットと一致しないためです。 this discussionに基づい例えば

pr($_SESSION);

Array 
( 
    [Config] => Array 
     ( 
      [rand] => 1482441247 
      [time] => 1179248446 
      [userAgent] => cc98eaffc23c634e0efd75ab9e36e810 
     ) 

) 

を与えた場合、セッションの内容は、あなたはであるConfigという変数があると言っていることがわかります

Config|a:3:{s:4:"rand";i:1482441247;s:4:"time";i:1179247983;s: 
9:"userAgent";s:32:"cc98eaffc23c634e0efd75ab9e36e810";} 

です型配列長3、配列内容は次のようになります。

    値の整数のためのキー値 randと長さ4の
  • ストリング1482441247
  • 長さ9の​​
  • ストリング値userAgentと値の整数のためのキー値timeと長さ4の文字列値の長さが32の文字列のキーはcc98eaffc23c634e0efd75ab9e36e810

ので、少し実験を使用すると、クッキーのデータを取り、dictsに&他の標準的なPythonのデータを含むPythonのリストに変換するために少しのpythonモジュールを記述することができるはずですオブジェクト。

免責事項:これはすべて研究に基づいています。私は自分自身を試していないので編集&のコメントを歓迎しています、いつものように、どんなdownvotesの理由も大歓迎です。

関連する問題