它不是跨域的.
我的网站由PHP和django组成,我在PHP中编写会话,但我想在django中读取它,我该怎么做?
解决方法:
首先,了解how PHP sessions work.
要从Django访问PHP的会话数据,您需要会话ID&您需要访问会话数据存储的任何位置.
要获取会话ID,请从cookie中检索它; cookie名称应设置为PHP的session.name
设置的值.在Django中,您可以使用request.COOKIES.get(‘< PHP的session.name设置>‘的值)从cookie中获取会话ID.显然,如果您不依赖cookie来维护会话数据,那么您需要为此组件采用不同的方法.
要访问数据,它会变得有点复杂:您需要知道会话数据的存储位置(PHP默认将其存储在文件中)以及将其转换为有意义的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|a:3:{s:4:"rand";i:1482441247;s:4:"time";i:1179247983;s:
9:"userAgent";s:32:"cc98eaffc23c634e0efd75ab9e36e810";}
您可以看到它说有一个名为Config的变量,其类型为数组长度为3,数组内容由以下内容组成:
>长度为4的字符串,其值为rand,它是值为1482441247的整数的键
>长度为4的字符串,带有值时间,它是值为1179247983的整数的键
>长度为9的字符串,其值为userAgent,它是长度为32且值为cc98eaffc23c634e0efd75ab9e36e810的字符串的键
所以通过一些实验你应该能够编写一个小python模块来获取cookie数据并将其转换为包含dicts&的python列表.其他标准的python数据对象.
免责声明:这完全基于研究;我自己没有尝试这样编辑和编辑欢迎评论,并且一如既往,非常感谢任何downVotes的原因.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。