クロスドメインではありません。 私のサイトはphpとdjangoで構成されていますが、私はPHPでセッションを作成しますが、私はwantoがdjangoでそれを読んでいます、どうすればいいですか?どのように私はdjangoで、PHPで作成されたセッションを得ることができますか?
答えて
まず、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、配列内容は次のようになります。
-
値の整数のためのキー値
- ストリング
1482441247
- 長さ9の
- ストリング値
userAgent
と値の整数のためのキー値time
と長さ4の文字列値の長さが32の文字列のキーはcc98eaffc23c634e0efd75ab9e36e810
rand
と長さ4の
ので、少し実験を使用すると、クッキーのデータを取り、dictsに&他の標準的なPythonのデータを含むPythonのリストに変換するために少しのpythonモジュールを記述することができるはずですオブジェクト。
免責事項:これはすべて研究に基づいています。私は自分自身を試していないので編集&のコメントを歓迎しています、いつものように、どんなdownvotesの理由も大歓迎です。
- 1. セッションはどのようにJSPで作成されますか?
- 2. はどのように私はC#でネストされた辞書を作成することができます
- 3. どのように私はPHPでパスファイルを作ることができます
- 4. 私のJavaアプレットは、PHPで認証されたセッションをどのように使用できますか?
- 5. どのように私は隠されたアイコンでアプリを作ることができますか?
- 6. どのように私はangular2でハイライトされたnav barを作ることができますか?
- 7. どのように私はユーザーがユーザーのためだけに作成されたときに新しいフォルダを作成することができます
- 8. ブラウザのリンクがクリックされたときに、word文書のurlで作成されたhttpセッションをどのようにして取得するのですか?
- 9. 私はどのように私のdjangoモデルのためのCSVファイルを作成するのですか?ここ
- 10. Grails 3でセッションが作成されないようにするにはどうすればよいですか?
- 11. はどのように私は、ファイル名とジッパーが含まれて作成することができます「/」
- 12. ユーザーがスクリーンショットを作成したかどうかはどのように知ることができますか?
- 13. どのように私はjavascriptで似たような文字を得ることができますか?
- 14. どのように私はPHPのカールで入力値を得ることができますか?
- 15. どのように私はPHPでリクエストの起源を得ることができますか?
- 16. どのように私はhtmlイメージタグアンドロイドを得ることができますか?
- 17. PHPで作成されたファイルにPHPコードを書き込むにはどうすればよいですか?
- 18. どのように動的に作成されたチェックボックスのリストを扱うことができますか?
- 19. PHPでどのようにしてデータベースを再作成することができますか(ユニットテストなど)
- 20. Djangoモデルでは、どのようにしてflushで1にリセットされるフィールドを作成できますか?
- 21. どのように私は、Djangoの異なる2つのログインフォームを作ることができますか?
- 22. どのように私はこれをHTMLとCSSで作ることができますか?
- 23. どのように私はこのようなボタンをWindowsのフォームで作ることができますか?
- 24. どのように私はデータベース関連の機能を作成するために一般化されたライブラリを作成することができます
- 25. どのように私はこれを解決することができます: "RuntimeError:閉じられたセッションを使用しようとしました。
- 26. 私はどのようにコードCからのstimulsoftレポートでマスターレポートを作成することができます#
- 27. 私はLinq IQueryableが実行されたことをどのようにテストすることができます
- 28. どのように私はUNIX(debian)でphpでメモリ内screencaptureを作ることができます
- 29. 私はどのように列の点で異なるPHPのテーブルを作ることができます
- 30. セッション認証でDjango Rest FrameworkへのHTTPリクエストを作成するにはどうすればよいですか?