当前位置: 首页 > 编程语言 > C#

如何在PHP和ASP.net应用程序之间共享会话?分享

时间:2023-04-10 13:07:12 C#

如何在PHP和ASP.net应用程序之间共享会话?我的公司采用了一些旧的php应用程序。由于我们偏爱ASP.net并且缺少以前开发人员的任何文档,我们不想花费太多资源来开发PHP。为实现新功能,我们将创建一个与用户具有相同外观的Asp.net应用程序。我们想开发一种“共存”的网络应用程序。所以我们必须在PHP和Asp.netwebapplication项目之间共享会话,因为存在涉及现有MySQL数据库的用户管理。(例如,链接“A”指向PHP网站,链接“B”指向asp.net应用程序)我们如何在PHP和asp.net应用程序之间共享会话?有没有人对这种可能对开发有用的“共存”事物有所暗示?编辑:IIS6将是我们的目标服务器,尽管IIS7.5也是一个选项我想告诉你我是如何完成它的。这两个应用程序都访问一个MySQL数据库并访问一个“会话”表,该表包含一个Guid、用户ID和一个confirmString(我想我以某种方式在其中编码了IDUser)和一个日期。会话仅由PHP应用程序启动(因为PHP应用程序仍然是主应用程序)。新会话将在日志表中生成新条目。PHP应用程序中链接到ASP.Net应用程序的每个链接都包含GET参数,包含Guid等。如果GET参数指向现有会话,ASP.net应用程序将检查GET参数并设置ASP中的IDUser.Net会话。指向PHP应用程序的链接使用相同的技术。(还有其他需要考虑的事情,比如超时或注销,但也可以处理)总而言之,我想说我的方法有效,自部署以来没有客户投诉(1年多前)我不认为那是可能在PHP和ASP中。NET会话本身是可能的。但是,可以使用读取会话内容的PHP页面,将它们存储在隐藏字段中,然后调用将读取这些字段并将它们加载到ASP.NET会话中的ASP.NET页面。从理论上讲,这是可能的。这是一个老问题,但我认为目前的任何答案都不完整。首先,我认为将会话数据存储在数据库服务器(如mysql或SQLServer)中是个坏主意。数据库是一种宝贵的资源,没有理由仅仅为了会话数据而破坏它。如果你打算在这样的数据库中存储会话,有“更好”的方法,比如确保会话数据在它自己的单独磁盘上,等等......但老实说我仍然觉得这是一个错误并且会限制你的可扩展性。对于存储会话,您需要一个简单的键/值存储,在我看来,您无法击败memcached(尽管我也很幸运地使用了redis+nodejs)。memcached的客户端几乎适用于所有语言:http://code.google.com/p/memcached/wiki/Clients所以,使用memcached时基本上你需要做的就是为密钥生成一个伪随机令牌,然后执行memcached.set。然后将该密钥存储在名为session-id或其他名称的cookie中。session-idcookie可以从任何服务器语言、.net、php、python等读取-并且使用简单的memcached.get检索会话值。查看memcached文档:http://code.google.com/p/memcached/wiki/NewStart这是一种非常简单且可扩展的会话方式,几乎适用于任何语言/服务器。http://cz.php.net/manual/en/function.session-set-save-handler.phphttp://support.microsoft.com/kb/317604你可以把PHP的session写到MsSQL里,配置.NET使用MsSQL作为会话后端。没问题。您的asp应用程序应该做三件简单的事情:比攻击双方的会话存储机制更好的方法是设置一个OpenId提供者并将一个OpenId消费者插入到asp.net和php应用程序中。有很多现有代码可以执行此操作。它比低级解决方案更优雅,更不容易出错。作为奖励,您可以在公司的其他应用程序中使用集成的OpenId登录并成为公司英雄。请参阅:在.NET/Windows和PHP/Linux/Apache网站上使用OpenID哦,亲爱的,也许有一天你会看到你的方法的错误,同时......默认情况下,PHP将其会话数据视为序列化数组是写入根据会话命名的文件。会话通常由名为PHPSESSID的cookie标识。所以在PHP中手动读取会话:$imported_session=unserialize(file_get_contents(session_save_path().'/'.$_COOKIE[session_name()]));该文件的格式非常简单,易于解析。但是,很容易实现您自己的PHP会话处理程序,以将任何格式的文件写入您喜欢的任何存储(请参阅如何将已撤销的代码与每个页面相关联,而无需重写每个页面的自动添加)。或者更改用于存储会话的cookie的名称。C。以上就是C#学习教程:如何在PHP和ASP.net应用之间共享session?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: