如何从PHP访问ASP经典会话变量?

时间:2016-05-05 13:37:34

标签: php architecture asp-classic

我有一个使用Windows经营的ASP经典编写的登录保护后台网站。登录状态存储在会话变量中。我还有一个PHP页面,只有登录用户才能访问。如何在PHP中检查客户端是否已登录此网站?

P.S。可能有多个用户同时访问该页面。

1 个答案:

答案 0 :(得分:7)

假设PHP和ASP应用程序共享相同的域名,这是一个循序渐进的指南。

1 - 创建名为sessionConnector.asp的asp文件。

2 - 在sessionConnector.asp中,将Session.Contents对象序列化为PHP可以反序列化的格式,例如JSON。您可以使用aspjson中的JSON.asp

<%@Language=VBScript CodePage=65001%>
<!--#include file="JSON.asp"-->
<%
Set JSONObject = jsObject()

For Each Key In Session.Contents
    If Not IsObject(Session.Contents(Key)) Then 'skip the objects cannot be serialized
        JSONObject(Key) = Session.Contents(Key)
    End If
Next

JSONObject.Flush
%>

3 - 创建一个名为GetASPSessionState()的PHP函数。

4 - 在GetASPSessionState()中,通过指定填充了sessionConnector.asp的{​​{1}}标头来发出Cookie的HTTP请求,该标头必须包含ASP会话的标识符,因此ASP可以识别用户,响应因用户而异。

5 - 获取响应(JSON字符串)后,使用json_decode反序列化并查找ASP会话变量。

$_SERVER["HTTP_COOKIE"]