我有一个ASP.NET登录表单,可以在成功登录时创建会话。它使用POST。
我想在PHP端检索此会话数据,但不确定如何实现此目的。
会话名称为“CUSTOMER_LOGGED_IN”。
我在我的PHP模板的标题中使用'session_start()来持久保存会话,它确实,但我不确定如何在我的PHP模板中显示会话数据。
有人可以帮忙吗?
非常感谢任何指示。
答案 0 :(得分:3)
如同提及的那样,您无法直接访问会话。 cookie或文件系统的替代方案是数据库,因为您不需要存储任何数据客户端,也不需要处理文件系统的读/写文件。
This问题有一些其他好的解决方案。
答案 1 :(得分:3)
您错过了服务器端语言实现会话的要点。 asp.net中的会话管理将与php实现不同。您需要设计一些共享会话数据的机制,可能是通过身份验证cookie和共享服务器端会话存储。
您将需要找到一种方法来告诉asp.net和php用户拥有的会话令牌。理论上你会
我不得不承认这并不容易。无论哪种方式,我认为分享这些信息是一些努力。我对php的了解比我对asp.net的了解更多,但概念是翻译的。在php中,您可以使用session_set_save_handler()功能来覆盖会话的工作方式。这将允许您从数据库中存储和检索会话,这实际上就是您要做的事情。
在共享主机上,为了安全起见,我经常在数据库中存储会话。理想情况下,如果可以避免,请不要在每个请求上联系远程数据库,这就是为什么我只将它用于很少用户的管理后端功能。有一些教程如何实现,可以自定义使用不同的保存机制
请参阅:
http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/
您可能还会考虑在asp.net端加密所需的所有会话数据,将此数据作为cookie存储在客户端,然后让php通过解密加密的cookie来创建自己的会话。你必须小心这些方法,对于php和asp.net访问它肯定应该通过https。
您根本没有提及有关域名的任何内容。如果您希望在远程位置进行身份验证,这有点类似于CAS身份验证。
我希望这有点帮助,至少在指出你的目标是什么。也许已经完成此任务的人将能够提供更具体的建议。
答案 2 :(得分:1)
ASP和PHP存储会话的方式不同,因此您无法直接访问它们。您可以加密cookie中的会话数据,并使用分片秘密将cookie传递给php。
唯一的另一种方法是,如果他们共享一个文件系统,你用ASP写入文件系统,然后用PHP读取它,但如果双方都需要写入相同的会话数据,这可能会变得混乱。所以在那种情况下我并不是真的建议。
答案 3 :(得分:1)
你最好的选择是将会话信息存储在一个外部存储器中,例如sql数据库,ASP.NET和PHP都可以访问它。