Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将会话从ASP.NET持久化到PHP_Php_Asp.net_Session_Cookies - Fatal编程技术网

将会话从ASP.NET持久化到PHP

将会话从ASP.NET持久化到PHP,php,asp.net,session,cookies,Php,Asp.net,Session,Cookies,我有一个ASP.NET登录表单,成功登录后会创建一个会话。它使用POST 我希望在PHP端检索此会话数据,但不确定如何实现 会话名称为“CUSTOMER\u LOGGED\u IN” 我在PHP模板的标题中使用“session_start”来持久化会话,它确实会持久化会话,但我不确定如何在PHP模板中显示会话数据 有人能帮忙吗 非常感谢您的指点。ASP和PHP stor会话不同,因此您无法直接访问它们。您可以在cookie中加密会话数据,并使用碎片机密将cookie传递给php 唯一的另一种方法

我有一个ASP.NET登录表单,成功登录后会创建一个会话。它使用POST

我希望在PHP端检索此会话数据,但不确定如何实现

会话名称为“CUSTOMER\u LOGGED\u IN”

我在PHP模板的标题中使用“session_start”来持久化会话,它确实会持久化会话,但我不确定如何在PHP模板中显示会话数据

有人能帮忙吗


非常感谢您的指点。

ASP和PHP stor会话不同,因此您无法直接访问它们。您可以在cookie中加密会话数据,并使用碎片机密将cookie传递给php


唯一的另一种方法是,如果它们共享一个文件系统,您可以使用ASP写入文件系统,然后使用PHP读取它,但如果双方都需要写入相同的会话数据,则这可能会变得混乱。因此,我不建议在这种情况下使用。ASP和PHP stor会话不同,因此您无法直接访问它们。您可以在cookie中加密会话数据,并使用碎片机密将cookie传递给php


唯一的另一种方法是,如果它们共享一个文件系统,您可以使用ASP写入文件系统,然后使用PHP读取它,但如果双方都需要写入相同的会话数据,则这可能会变得混乱。因此,我不建议在这种情况下这样做。

正如netimp所提到的,您不能直接访问会话。Cookie或文件系统的另一种选择是数据库,因为您不需要在客户端存储任何数据,也不需要在文件系统中读取/写入文件


这个问题还有其他一些很好的解决方法。

正如netimp提到的,您不能直接访问会话。Cookie或文件系统的另一种选择是数据库,因为您不需要在客户端存储任何数据,也不需要在文件系统中读取/写入文件


这个问题还有其他一些好的解决方案。

您最好的选择是进程外会话,它将会话信息存储在外部存储中,例如ASP.NET和PHP都可以访问的sql数据库

最好的选择是进程外会话,该会话将会话信息存储在外部存储中,例如ASP.NET和PHP都可以访问的sql数据库

您没有注意到会话是由服务器端语言实现的。asp.net中的会话管理与php实现不同。您需要设计一些共享会话数据的机制,可能是通过身份验证cookie和共享服务器端会话存储

您需要找到一种方法来告诉asp.net和php用户拥有什么会话令牌。理论上你会的

在asp.net上登录用户。您可以使用asp.net中内置的会话管理系统,也可以全部手动完成。会话只是使用一些令牌绑定到客户端的数据存储。因此,会话初始化将为您提供一些身份验证令牌,这些令牌需要作为cookie在客户端可用。 将会话数据存储在php和asp.net实现都可以访问的位置,使用会话id对其进行索引。 通过客户端cookie将令牌传递回php实现 手动或通过在php中自定义会话机制从共享会话存储加载数据 我得承认这并不容易。不管怎样,我认为分享这些信息是一种努力。我对php的理解比对asp.net的理解要多,但概念是可以翻译的。在php中,您可以使用session\u set\u save\u处理程序功能来管理会话的工作方式。这将允许您从数据库中存储和检索会话,而这正是您要做的事情

在共享主机上,为了安全起见,我经常在数据库中存储会话。理想情况下,如果可以避免的话,您不希望在每次请求时都联系远程数据库,这就是为什么我只将它用于只有很少用户的管理后端功能。有一些教程介绍了如何实现这一点,这些教程可以定制为使用不同的保存机制

见:

您还可以考虑在ASP.NET端加密所有会话数据,将该数据存储在客户端作为cookie,然后PHP通过解密加密cookie来创建自己的会话。您必须小心使用这类方法,对于php和asp.net访问,都应该使用https

你根本没有提到任何关于域名的事情。如果您希望在远程位置进行身份验证,这有点类似于CAS身份验证


我希望这能有所帮助,至少能指出你的目标。也许已经这样做过的人能够提供更具体的建议。

您忽略了会话是由服务器端语言实现的这一点。asp.net中的会话管理与php实现不同。哟 你需要设计一些共享会话数据的机制,可能通过身份验证cookie和共享服务器端会话存储

您需要找到一种方法来告诉asp.net和php用户拥有什么会话令牌。理论上你会的

在asp.net上登录用户。您可以使用asp.net中内置的会话管理系统,也可以全部手动完成。会话只是使用一些令牌绑定到客户端的数据存储。因此,会话初始化将为您提供一些身份验证令牌,这些令牌需要作为cookie在客户端可用。 将会话数据存储在php和asp.net实现都可以访问的位置,使用会话id对其进行索引。 通过客户端cookie将令牌传递回php实现 手动或通过在php中自定义会话机制从共享会话存储加载数据 我得承认这并不容易。不管怎样,我认为分享这些信息是一种努力。我对php的理解比对asp.net的理解要多,但概念是可以翻译的。在php中,您可以使用session\u set\u save\u处理程序功能来管理会话的工作方式。这将允许您从数据库中存储和检索会话,而这正是您要做的事情

在共享主机上,为了安全起见,我经常在数据库中存储会话。理想情况下,如果可以避免的话,您不希望在每次请求时都联系远程数据库,这就是为什么我只将它用于只有很少用户的管理后端功能。有一些教程介绍了如何实现这一点,这些教程可以定制为使用不同的保存机制

见:

您还可以考虑在ASP.NET端加密所有会话数据,将该数据存储在客户端作为cookie,然后PHP通过解密加密cookie来创建自己的会话。您必须小心使用这类方法,对于php和asp.net访问,都应该使用https

你根本没有提到任何关于域名的事情。如果您希望在远程位置进行身份验证,这有点类似于CAS身份验证


我希望这能有所帮助,至少能指出你的目标。也许已经这样做过的人可以提供更具体的建议。

如果你在cookie中放置许多数据,浏览器可能会崩溃或删除它们,加载它们的延迟非常大,忘记cookie来交换数据。我说,作为传递数据的一种方式,不要100%地使用它,一旦它进入php,他就可以将其存储为php会话数据。如果我在$u POST中传递它,我是否可以存储CustomerID?比如说,如果设置了$_POST['CUSTOMER_LOGGED_IN']{$fname=$_POST['CUSTOMER_LOGGED_IN'];$_SESSION['CUSTOMER_LOGGED_IN']=$fname;}/$fname存储详细信息,您可以这样做,但这是非常不安全的。如果你想做那样的事,我会这样做。我将创建一个传递页面,用户转到该页面,该页面然后在后台使用cURL连接到php URL,为用户创建会话,并将会话ID返回到ASP页面。获得会话ID后,将其作为查询字符串的一部分传递回PHP页面。由于sessionID不是一个数字,而是一个随机字符串,因此通过查询字符串传递会更安全。尽管在阅读其他注释后,数据库可能是实现这一点的最佳方式。PHP可以使用数据库存储会话,您可以创建一个存储PHP会话的表,并编写代码告诉ASP如何修改它。因为它是一个序列化字符串,所以应该相当简单。如果你在cookie中放置了许多数据,浏览器可能会崩溃或删除它们,加载它们的延迟非常大,忘记cookie来交换数据。我说过,作为传递数据的一种方式,不要100%地使用它,一旦它进入php,他就可以将其存储为php会话数据。如果我在$u POST中传递它,我是否可以存储CustomerID?比如说,如果设置了$_POST['CUSTOMER_LOGGED_IN']{$fname=$_POST['CUSTOMER_LOGGED_IN'];$_SESSION['CUSTOMER_LOGGED_IN']=$fname;}/$fname存储详细信息,您可以这样做,但这是非常不安全的。如果你想做那样的事,我会这样做。我将创建一个传递页面,用户转到该页面,该页面然后在后台使用cURL连接到php URL,为用户创建会话,并将会话ID返回到ASP页面。获得会话ID后,将其作为查询字符串的一部分传递回PHP页面。由于sessionID不是一个数字,而是一个随机字符串,因此通过查询字符串传递会更安全。尽管在阅读其他注释后,数据库可能是实现这一点的最佳方式。PHP可以使用数据库存储会话,您可以创建一个存储PHP会话的表,并编写代码告诉ASP如何修改它。因为它是一个序列化的字符串,所以
当然,这需要您编写一些php代码,知道如何从外部存储检索会话数据。PHP不会在本机上实现这一点,同样,您也必须在任何语言上实现这一点。如果您将代码放在存储过程中,您可能能够跨语言重用这些代码。当然,这需要您编写一些php代码,知道如何从外部存储中检索会话数据。PHP不会在本机上实现这一点,同样,您也必须在任何语言上实现这一点。如果您将代码放入存储过程中,您可能能够跨语言重用这些代码。您忘记告诉的最重要的部分是:这些应用程序是否托管在同一网站、同一服务器、不同/删除服务器、同一网络上?它们可以访问同一个数据库或其他共享资源/服务器吗?在他们之间建立某种信任并维护两组不同的会话数据可能更简单。很抱歉延迟。它们位于同一个网站、服务器和网络上。您忘记告诉的最重要的部分是:这些应用是否位于同一网站、同一服务器、不同/删除服务器、同一网络上?它们可以访问同一个数据库或其他共享资源/服务器吗?在他们之间建立某种信任并维护两组不同的会话数据可能更简单。很抱歉延迟。他们在同一个网站、服务器和网络上。好吧,如果在asp.net上实现自定义会话提供程序是可能的-我不知道,但是-在php上可能类似-这意味着,他可以按照自己的意愿解释会话cookie中出现的会话id;那么,如果有两个会话cookie,如果必须这样做,该怎么办这个在经典asp和asp.net之间共享会话的示例可能很有用。好吧,如果在asp.net上实现自定义会话提供程序是可能的——我不知道,但是——在php上也可能实现类似的功能——这意味着,他可以按照自己的意愿解释会话cookie中显示的会话id;那么,如果有两个会话cookie,如果必须这样做,该怎么办这个在经典asp和asp.net之间共享会话的示例可能很有用。