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

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

问题描述:

I have a Django application that logs users in and out using the standard Django auth system. The app also uses sessions which are stored in the Django database (db storage is also the Django default).

So far, so good, but:

On the same domain I have a large collection of php pages running on apache. I want to be able to log in via my Django application and have django initiate all my session variables and then when I click a link that takes me to a php section I want to be able to access the session variables I created in Django in php.

What is my best option for sharing the session?

(If it makes any difference PHP is not editing the session, only using the variables)

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

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

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

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

You can implement your own Custom Session Handler in PHP. Connect to the database you store the session data from the Django database and those data will be transparently offered in PHP as the session values then.

A benefit of the custom session handler is as well, that you can make that session in PHP write protected, you just drop any changes.

Next to that you need to share the session id, it is connected to the session name. I do not know Django well, but I guess there is something comparable, so if you make it compatible cookies or URL-parameters might even work instantly.

SUCCESS!! (of a kind). Its a little hacked together but I managed to get it working.

Rather then trying to rewrite django_php_bridge db.py file to use the new version of phpserialise (1.2),

I used to old version with a couple of my own custom adjustments. Most importantly I had to add an extra if statement to the serialize function to convert a unicode string but apart from that I just followed the instructions djang_php_bridge docs file (remembering to set the SESSION_COOKIE_NAME field in the django settings file), and it worked straight away.

At some point when I have more time I will have a go at re-writing the django_php_bridge to use the new latest phpserialize version, but for now I am just happy to have a successful out come.