如何在同一个域上共享Django和PHP之间的会话数据

时间:2011-06-16 22:26:08

标签: php django session session-variables session-cookies

我有一个Django应用程序,使用标准的Django auth系统登录和注销用户。该应用程序还使用存储在Django数据库中的会话(数据库存储也是Django默认值)。

到目前为止,非常好,但是:

在同一个域上,我在apache上运行了大量的php页面。我希望能够通过我的Django应用程序登录并让django启动我所有的会话变量然后当我点击一个链接,带我到一个PHP部分,我希望能够访问我在php中创建的Django会话变量

分享会话的最佳选择是什么?

(如果没有任何区别PHP不编辑会话,只使用变量)

2 个答案:

答案 0 :(得分:1)

您可以在PHP中实现自己的Custom Session Handler。连接到存储来自Django数据库的会话数据的数据库,这些数据将在PHP中透明地作为会话值提供。

自定义会话处理程序的一个好处是,您可以使该会话在PHP中写保护,您只需删除任何更改。

接下来,您需要共享session id,它已连接到session name。我不太了解Django,但我想有一些类似的东西,所以如果你使它兼容cookie或URL参数甚至可以立即工作。

答案 1 :(得分:0)

SUCCESS !! (一种)它有点被黑了,但我设法让它发挥作用。

而不是尝试重写django_php_bridge db.py文件以使用新版本的phpserialise(1.2),

我曾经使用过几个自己的自定义调整旧版本。最重要的是,我必须在serialize函数中添加一个额外的if语句来转换unicode字符串,但除此之外我只是按照说明djang_php_bridge docs文件(记得在django设置文件中设置SESSION_COOKIE_NAME字段),它立即起作用

在我有更多时间的时候,我会重新编写django_php_bridge以使用最新的phpserialize版本,但是现在我很高兴能有一个成功的出来。